Dans mon code:Numérisez une chaîne y compris les espaces en C
scanf("%s", &text);
printf("%s\n", text);
Entrée:
hi how are you
Sortie:
hi
et non
hi how are you
que puis-je faire pour le réparer?
Dans mon code:Numérisez une chaîne y compris les espaces en C
scanf("%s", &text);
printf("%s\n", text);
Entrée:
hi how are you
Sortie:
hi
et non
hi how are you
que puis-je faire pour le réparer?
Regardez fgets
La fonction fgets() lit au plus un inférieur au nombre de caractères spécifiés par n du flux donné et les stocke dans la chaîne arrête quand s.Reading un caractère de nouvelle ligne est trouvé, à la fin de fichier ou erreur. La nouvelle ligne, le cas échéant, est conservée. Si des caractères sont lus et qu'il n'y a pas d'erreur, un caractère `\ 0 ' est ajouté pour terminer la chaîne .
Je suppose que vous cherchez
ssize_t getline(char **lineptr, size_t *n, FILE *stream);
qui va lire jusqu'à un séparateur de retour à la ligne. Ou si vous utilisez un autre delimiter
ssize_t getdelim(char **lineptr, size_t *n, int delim, FILE *stream);
Utilisez fgets pour obtenir votre entrée:
#include <stdio.h>
#include <stdlib.h>
int main(void) {
char text[80];
fgets(text, sizeof(text), stdin);
printf("%s\n", text);
}
uniquement sur Linux ou un autre système utilisant GNU libc « getline() et getdelim() sont des extensions GNU Ils sont disponibles depuis la libc 4.6.27. "(Http://linux.die.net/man/3/getline) –
@Paul; Utilisé pour être une extension GNU oui, il fait aujourd'hui partie de POSIX.1-2008. – falstro
merci. Je dois lire à ce sujet - à quel point est-il largement appliqué? –