fgets liest alles was es kriegen kann ^^
-
hallo forum,
fgets soll ja nur soviel zeichen lesen wie das zweite argument angibt, ich hab folgenden code geschrieben um mir das mal anzuschauen#include<stdio.h> #define MAXLAENG 10 int main(void){ char puffer[MAXLAENG]; printf("\nzeile eingeben, ende mit eingabetaste...\n"); while(1){ fgets(puffer,MAXLAENG,stdin); if (puffer[0] == '\n') break; printf("%s",puffer); } return 0; }
und was is, es liest natürlich mehr als 10 zeichen ein. woran liegt es, was mache ich falsch?
mfg...
-
Es liest maximal MAXLAENG-1 Zeichen ein. Ich glaube eher, du interpretierst das Verhalten deines Programms falsch ... wenn man dort mehr als 9 Zeichen eingibt, sieht es nämlich leicht so aus, als wären auch mehr als 9 eingelesen worden. Dabei ist die Schleife aber schon mehrmals durchgelaufen. Die Illusion kommt dadurch, dass stdout (und damit printf) gepuffert sind ... schreib mal fflush(stdout); hinter printf und probier das nochmal.
-
oder ich mache aus printf("$s"); ein printf("%s\n");
dann seh ich auch das die schleife mehrmals durchlaufen wird.jetzt leuchtet es mir ein... eigentlich wie immer, absolute kleinigkeiten an denen man hängen bleibt
-
Ich denke das wäre eine sehr gute Idee:
necromant schrieb:
oder ich mache aus printf("$s"); ein printf("%s\n");