Comment lire l'entrée standard dans une variable de chaîne jusqu'à ce que EOF en C?

J'obtiens "Erreur de Bus" en essayant de lire stdin dans un char* variable.
Je veux juste lire des trucs venant stdin et de le mettre en premier dans une variable, puis continuer à travailler sur la variable.

Mon Code est comme suit:

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

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

Mais de toute façon j'ai toujours "erreur de Bus" retournée par l'appel de cat test.txt | myapp, où myapp est le code compilé ci-dessus.

Ma question est comment puis-je lire stdin jusqu'à ce que EOF dans une variable? Comme vous le voyez dans le code, j'ai juste envie d'imprimer la taille de l'entrée de venir sur stdin, dans ce cas, il doit être égale à la taille du fichier test.txt.

Je pensais juste à l'aide de scanf serait assez, peut-être tamponnée façon de lire stdin?

Pourquoi ne pas simplement utiliser stat() pour obtenir la taille du fichier, puis utilisez le fichier de taille de + 1 à (essayer de) malloc le tampon, puis les lire() à le tampon?

OriginalL'auteur NovumCoder | 2010-03-23