Probleme mit gets/fgets
-
Hi @ all,
ich habe ein problem mit gets.
Ziel: ein string eingeben der leerzeichen enthält.scanf liest ja nur bis zum leerzeichen also wollte ich gets verwenden.
aber weder gets noch fgets wartet auf meine eingabe. die laufen einfach durch das programm... wo kann denn da der fehler sein?gets(search); fgets(search,MAXLENGTH,stdin);
-
Kann sein, daß da von deiner vorigen Eingabe noch das Zeilenende im Eingabepuffer steht - das mußt du erst einmal loswerden.
(Tip: fflush(stdin) ist der falsche Weg)
-
Mit fflush() lässt er aber mein gets zu ...
aber ich hab noch ein problem: (ich post das hier jetzt einfach dazu)ich hab eine datei mit inhalt:
"NOP DES ACT DES NOP RD NOP NOP DES PRE DES NOP ..." alles in eine zeile gepackt.
jetzt will ich da suchen ob eine bestimmte kombination vorkommt.
warum klappt das so nicht? hab auch schon strstr ausprobiert ... gleiches ergebnis.
immer "Match"printf("Search for Signal: "); gets(search); while(fgets(inpline, MAXLENGTH, fsearch) != NULL) { if(strcmp(inpline,search)!=NULL) { printf("%s in Line %d\n",search, nline); } else { printf("No Match found\n"); }
-
kein fflush(stdin)! mach das niemals!
http://www.c-plusplus.net/forum/viewtopic-var-t-is-39349.htmlstrcmp vergleicht strings, es sucht nicht.
strstr willst du.dort suchst du in zukunft, wenn du eine funktion brauchst:
http://www.cppreference.com/index.html
http://www.dinkumware.com/manuals/#Standard C Library
-
Und gets() macht jedes Programm kaputt.
-
Naja, wenn nichts per stdin eingelesen wird, heisst das meistens das der code einfach schlecht ist.
das kann z.b. heissen, dass du dinge ueberschrieben hast (undefinied behavor), etc.
achte darauf was du einliest und wie du es machst, du kannst nur
auf speicher schreiben der auch alloziiert wurde
-
c.rackwitz schrieb:
strstr willst du.
dort suchst du in zukunft...warst du mal beim militär?
oder woher kommt dieser befehlston
-
man muss nicht beim militaer gewesen sein, um leute zu ihrem glueck zu zwingen.