Question

Pour l'un de mes exercices, nous devons lire la ligne par ligne et émettre en utilisant uniquement GetChark and Printf.Je suis K & R et l'un des exemples montre à l'aide de Getchar et de Putchar.De ce que j'ai lu, GetCharar () 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 que vous stockez tout ce qui est écrit en une variable de charme.Donc, si l'entrée Bonjour, World!, Il le stockera également dans une variable.J'ai essayé d'utiliser strtstr et strcat mais sans réussir.

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

Était-ce utile?

La solution

Vous aurez besoin de plus d'un caractère pour stocker une ligne.Utilisez par exempleun tableau de caractères, comme ceci:

#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 les lignes plus longues qu'une taille fixe (255 dans ce cas).K&R vous apprendra plus tard la mémoire allouée dynamiquement que vous pouvez utiliser pour lire arbitrairement de longues lignes.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top