Wie zu Lesen, die Standardeingabe in einer string-variable, bis ein EOF-Zeichen in C?

Bin ich immer der "Bus-Error" versucht zu Lesen stdin in eine char* variable.
Ich die einfach nur Lesen wollen ganze Zeug über stdin und legen Sie es zuerst in eine variable, dann arbeiten Sie weiter auf die variable.

Mein Code ist wie folgt:

char* content;
char* c;
while( scanf( "%c", c)) {
 strcat( content, c);
}

fprintf( stdout, "Size: %d", strlen( content));

Aber irgendwie bekomme ich immer "Bus error" zurückgegeben, indem cat test.txt | myapp, wo myapp ist der kompilierte code oben.

Meine Frage ist, wie lese ich stdin bis ein EOF-Zeichen in eine variable? Wie du im code sehen, ich will nur drucken die Größe der input kommt über stdin, in diesem Fall sollte gleich der Größe der Datei test.txt.

Ich dachte nur mit scanf genug sein würde, vielleicht gepufferten Weise zu Lesen stdin?

  • Warum nicht einfach stat() auf, um die Größe der Datei, dann verwenden Sie den Datei-Größe + 1 zu (versuchen zu) malloc den Puffer und dann read() auf den Puffer?
InformationsquelleAutor NovumCoder | 2010-03-23
Schreibe einen Kommentar