kurze strncmp - Frage (Leerzeichen suchen)
-
feigling schrieb:
Ich denke, er sucht nach strchr:
->
if(strchr(string, ' ')) ...
und warum kann man das nicht mit
if (strchr(string," ",5)==0)machen??
ich brauch eben genau den fall, dass in einem string die stelle gesucht werden muss, die z.b. 5 Leerzeichen hintereinander aufweist.
-
Weil strchr nur 2 Argumente aufnimmt und nicht so funktioniert, wie du willst :x
Da musste halt selber ne Funktion erstellen, die die Anfangsstelle zurückgibt nach 5 Leerzeichen.
-
hi,
danke - also nur kurz noch zum checken, ob ichs kapiert hab:for-schleife in der alle zeichen eines strings durchsucht werden,
int zähler=0 erstellen,
if zähler==5 dann gib den schleifen-wert minus 5 zurück,
dann im string nach
if(strchr(string, ' '))
suchen und wenn einmal ein ' ' gefunden wurde den zähler ++ setzen, wenn
was andres als ' ' gefunden wird, zähler auf null setzen.
dazwischen einoder so ähnlich?
mann ist das kompliziert.
-
Mach es so:
/** * Alle Chars im String durchgehen, von der startpos aus und * vergleichen, ob der aktuelle Char mit dem Gesuchten übereinstimmt; * wenn ja, dann sepc hochzählen und überprüfen, ob sepc die gewünschte * Anzahl (sepcount) hat und wenn ja, ab dort den String übergeben. */ char *strsep(const char *str, int startpos, char sep, int sepcount) { char *s; int sepc = 0; for(s = (char *)(str + startpos); *s; s++) { if(*s == sep) sepc++; else sepc = 0; if(sepc == sepcount) return s + 1; } return NULL; }
Und benutzen kann man es für deine Bedürfnisse so:
int main() { char *test = "Hallo, wie geht es dir ?"; char *res = strsep(test, 0, ' ', 4); printf("%s\n", res); return 0; }
Ich denke mal, das ist, was du willst.
-
Also ich würde es trotzdem mit strstr() machen. Warum denn das Rad neu erfinden?
strstr() sucht genau die Stelle, wo das erste mal die 5 Leerzeichen auftreten und liefert einen Zeiger darauf zurück (aufs erste Leerzeichen) und damit kann man wunderbar weiterarbeiten.
-
Oh stimmt, so kann man es auch machen. Daran hab ich garnicht gedacht, dass man einfach nach vier Leerzeichen sucht. Naja, kann man machen wie man lustig ist
-
Also ist es richtig.... wenn nur "geht es dir ?" ausgegeben wird ?
-
Ja, warum sollte es nicht richtig sein ?
Der Code sucht nach vier Leerzeichen und gibt dann (Pos vom letzten Leerzeichen + 1) zurück und genau da fängt "geht es dir ?" an.
-
habe auch eine kurze frage bezüglich strncmp !
ich lese "vcpq0" in den string freq ein.dann mach ich
if(0==strncmp(freq,"v",1)&&(0==strncmp(freq,"0",5)))
doch diese bedingung ist nie erfüllt
das v testet er
aber die 0 nicht.....aber warum ?!thx
-
hat sich bereits erübrigt.......