2 votes

C Lors de l'exécution d'un fichier C dans un terminal, comment puis-je ajouter un saut de ligne à l'entrée lorsque fgets() ou scanf() me le demande ?

Scénario 1

char string[MAX_BYTES] = "This is a string\nthat I'm using\nfor scenario 1";

Scénario 2

printf("Enter string: ");
fgets(string, MAX_BYTES, stdin);

Si je fournis la chaîne en code (scène 1), je peux faire un saut de ligne avec ' \n' .

Mais si l'on demande dans le terminal avec fgets() o scanf() (scén. 2), en appuyant sur enter poursuit l'exécution du code.

Comment ajouter un saut de ligne à l'entrée sans déclencher le reste du code ?

4voto

artm Points 4966

Habituellement, cela ne peut pas être fait avec fgets y scanf mais vous pouvez utiliser getchar à la place :

int ch;
int idx = 0;
while( ( (ch = getchar()) != EOF ) && idx < MAX_BYTES)
{
    string[idx++] = ch;
}
printf("%s", string);

Note getchar acceptera toute entrée, y compris \n y el while La boucle se termine lorsque EOF c'est-à-dire Ctrl+D de stdin . Vous copiez ensuite chaque caractère dans le tampon en conséquence.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X