string auf zeichen pruefen
-
hallo,
ich moechte pruefen, ob der inhalt eines char-arrays get nur aus whitespaces besteht. get ist ein array von chars mit der laenge recvd.
if (!strcmp(get[0], '')) { for (l=0; l<recvd; l++) { if (get[l] == ' ') x++; } if (recvd == x) continue; }
das klappt nicht, wahrscheinlich ist der strcmp()-aufruf falsch, da get[0] ja die anfangsadresse beinhaltet (?). wie koennte ich diese pruefung vornhemen?
ich habe noch einen weiteren ansatz:if (!strncmp(get, empt, n)) { ... }
wobei n die moegliche maximallaenge von get ist und empt ein array voller whitespaces ist (mit der laenge von get). das scheint mir sehr unbeholfen.
habt ihr eine idee? danke fuer antworten im vorraus...gruss caspar
-
Caspar schrieb:
ich moechte pruefen, ob der inhalt eines char-arrays get nur aus whitespaces besteht.
bool check(const char* p) { for(; *p; ++p) if(*p!=' ') return false; return true; }
Dein strcmp-Aufruf ist falsch, da werden Zeichenketten erwartet und keine einzelnen Zeichen. Ausserdem hätts auch ein if(get[0]==' ') getan
-
ich verstehe die for-schleife nicht...wieso kann man damit eine zeichenkette durchgehen?
-
Weil Zeichenketten im Grunde nur Arrays von Zeichen sind und diese durchlaufe ich mit einem Zeiger (siehe Buch oder so).
Ausserdem werden Zeichenketten mit einer 0 abgeschlossen, so hat man die Abbruchbedinung beim Durchlaufen:
for(; *p != 0; ++p)
...Dass !=0 kann man sich aber auch sparen.
-
Die Prüfung auf ' ' ist glaub ich nicht ausreichend. Da nach Whitespace Characters gefragt wurde, dafür sollte man "int isspace( int c );" nutzen
isspace returns a non-zero value if c is a white-space character (0x09 – 0x0D or 0x20).
bool check(const char* p) { for(; *p; ++p) if(0==isspace(*p)) return false; return true; }
-
vielen dank fuer die antworten - es funktioniert einwadfrei ! koennt ihr mir weiterfuehrende dokumente zur arbeit mit strings oder mit zeigern auf strings im internet empfehlen?
gruss caspar
-
Schau doch mal in die Tutorials hier im Forum.
Funktionen die strings arbeiten haben sehr oft str im Namen, einfach mal in der Hilfe deines Compilers
oder einem Buch mit der C-Runtime library schmöckern.
-
...da war ich wieder mal zu faul zum selberdenken/suchen