Ich bekomme "Bus Error" versucht stdin
in eine char*
Variable zu lesen. Ich möchte nur ganze Sachen über stdin
lesen und zuerst in eine Variable schreiben, dann weiter an der Variablen arbeiten.Wie liest man die Standardeingabe in eine Stringvariable bis EOF in C?
My-Code ist wie folgt:
char* content;
char* c;
while(scanf("%c", c)) {
strcat(content, c);
}
fprintf(stdout, "Size: %d", strlen(content));
Aber irgendwie immer "Busfehler" kehrte ich erhalten, indem cat test.txt | myapp
Aufruf, wo myapp
den kompilierten Code oben ist.
Meine Frage ist, wie lese ich stdin
bis EOF in eine Variable? Wie Sie im Code sehen, möchte ich nur die Größe der Eingabe über Stdin drucken, in diesem Fall sollte es gleich der Größe der Datei sein test.txt
.
Ich dachte, nur mit scanf
wäre genug, vielleicht gepufferte Art zu lesen stdin
?
Warum nicht einfach verwenden stat() die bekommen Dateigröße, dann verwenden Sie die Dateigröße + 1, um (versuchen Sie) malloc den Puffer und dann lesen() in den Puffer? – technosaurus