getchar () et lecture ligne par ligne

Pour l’un de mes exercices, nous devons lire ligne par ligne et produire en utilisant SEULEMENT getchar et printf. Je suis K & R et l’un des exemples montre l’utilisation de getchar et putchar. D’après ce que j’ai lu, getchar () lit un caractère à la fois jusqu’à EOF. Ce que je veux faire, c’est lire un caractère à la fois jusqu’à la fin de la ligne, mais stocker tout ce qui est écrit dans la variable char. Donc, si vous entrez Hello, World !, il stockera également le tout dans une variable. J’ai essayé d’utiliser strstr et strcat mais sans succès.

while ((c = getchar()) != EOF) { printf ("%c", c); } return 0; 

Vous aurez besoin de plus d’un caractère pour stocker une ligne. Utilisez par exemple un tableau de caractères, comme suit:

 #define MAX_LINE 256 char line[MAX_LINE]; int line_length = 0; //loop until getchar() returns eof //check that we don't exceed the line array , - 1 to make room //for the nul terminator while ((c = getchar()) != EOF && line_length < MAX_LINE - 1) { line[line_length] = c; line_length++; //the above 2 lines could be combined more idiomatically as: // line[line_length++] = c; } //terminate the array, so it can be used as a string line[line_length] = 0; printf("%s\n",line); return 0; 

Avec cela, vous ne pouvez pas lire des lignes plus longues qu'une taille fixe (255 dans ce cas). K & R vous apprendra plus tard une mémoire allouée dynamicment que vous pourrez utiliser pour lire des lignes arbitrairement longues.