Czytanie pojedynczych znaków z char*

0

Witam!
Przepraszam, że zadręczam Was kolejnym problemem z natury banalnych, ale jakoś tego obejść, a i wujek Google mi nie pomógł. Mianowicie potrzebuje przeczytać char* znak po znaku, czyli coś na wzór funkcji getc(FILE* ) tylko że dla łańcuchów. Jak to zrobić? Pozdrawiam!

0
char *znaki="ala ma kota";

for(char *i=znaki;*i;++i) cout<<" '"<<*i<<"'";
// lub
for(int i=0;znaki[i];++i) cout<<" '"<<znaki[i]<<"'";
0

Witam!
Dzięki Wielkie za pomoc!
Nie chce zaśmiecać forum dlatego nie będę zakładał nowego wątku, tylko zapytam się tutaj:
Mam sytuację w której muszę dopisać znak do ciągu znaków char*
próbowałem:

 strcat(ciag,&znak)

ale dopisuje mi jakieś bzdury. Jak to powinienem napisać?

0

przede wszystkim musisz zarezerwować wcześniej większą tablicę znaków, tak żeby zmieścił się znak i NULL.
Po drugie po co Ci ten ampersand?
po prostu strcat(ciag, znak), bo definicja jest strcat(char , const char)

1

@up - nieprawda...

@Maleficus - ja bym to zrobił np. tak:

char tmp[2];
tmp[0] = znak;
tmp[1] = 0;
strcat(ciag, tmp);

Opiera się to na tym że strcat wymaga podania tekstu jako drugiego parametu - a tekst w C to nic innego niż ciąg znaków (liczb) zakończonych zerem.

PS. sprytniej by było int tmp = znak; strcat(ciag, &tmp); ale to niekoniecznie musi (wszędzie) działać, a osobiście bym zabił kogoś kto taki kod pisze ;)

0
 int kon = 0;
	char c;
	char* rozkaz = "\n";
	char tmp[2];
	tmp[1] = 0; 


		for(int i=0;pole[i];++i)
		{ 
			
		
			c=pole[i];
			i++;
			tmp[0] = c;
			strcat(rozkaz,tmp);
			}
			
				if (rozkaz == "READ") kon = 1;
				if (rozkaz == "WRITE")kon = 2;

w linijce z strcat wyrzuca mi

An unhandled exception of type 'System.AccessViolationException' occurred in sample.exe

Additional information: Attempted to read or write protected memory. This is often an indication that other memory is corrupt. 

ale błędu nie widzę. Wie ktoś o co chodzi?

0

Problem akurat nie jest z tmp tylko z ciągiem znaków... strcat to nie cudotwórca, tak naprawdę jest bardzo prosty 'pod maską'.

Nie dość że wcześniej MJaay o tym pisał to jeszcze... manual: (http://www.cplusplus.com/reference/clibrary/cstring/strcat/)

destination
Pointer to the destination array, which should contain a C string, and be large enough to contain the concatenated resulting string.

Inaczej mówiąc, twój strcat pisze za końcem łańcucha i nadpisuje inne wartości na stosie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1