plusieurs mots d'entrée de chaîne par scanf( )
quelle est la syntaxe pour les chaînes d'entrée avec plus d'un mot je.e avec un espace entre le scanf() n'obtient()
- Ressemble plus à une question C qu'en C++, corrigez-moi si je me trompe ?
Vous devez vous connecter pour publier un commentaire.
Est-il
'\t'
ou'\n'
comme"\t123 456"
, rien n'est lu enstring
.Ici
[^\n
indique quescanf( )
continuera de recevoir des caractères dansname[ ]
jusqu'à ce qu'un\n
est rencontré.s
dansscanf("%[^\n]s",name);
.s
n'a pas de sens ici.%[^\n]
déjà demande pour tous les personnages, mais d'une nouvelle ligne.Je ne pense pas que ce soit possible avec scanf().
Si vous connaissez le nombre de mots à lire, vous pouvez le lire avec
Noter que c'est une énorme faille de sécurité, car l'utilisateur peut facilement saisir une chaîne de caractères est plus long que l'espace alloué.
Si vous ne savez pas le nombre de mots, vous pourriez avoir à reformuler votre question. De quoi avez-vous besoin de le lire? Pourquoi ne voulez-vous pas utiliser gets(), pourquoi a-t-elle à scanf()?
gets
est sa propre faille de sécurité trop, et l'on devrait utiliserfgets
à la place.Mieux utilisé
fgets()
quescanf()
pour la lecture d'une ligne de saisie de l'utilisateur.Si le code doit utiliser
scanf()
puisMaintenant analyser
buf
pour mots individuels.Vous avez pu lire une ligne entière à partir d'un fichier si vous le souhaitez avec:
Maintenant, vous pouvez utiliser sscanf pour obtenir tous les mots:
"ligne" et "parole" sont des pointeurs de char.
Remarque comment ligne va vers pour obtenir le mot suivant.
scanf("%[^\n]\n", line);
sera pas toujours lire une ligne entière. Il n'a pas d'enregistrer quoi que ce soit dansline
est entrée est"\n"
et la'\n'
restera dansstdin
.sscanf(line, "%s", word);
ne sera pas enregistrer quoi que ce soit dansword
siline
n'est composée que d'un espace blanc.Présente les résultats d'analyse
champ1 contient le "Pain", champ2 contenant "lait",... field6 contenant des "cookies". Entre le premier et le dernier mots que vous peut un ou plusieurs espaces ou tabulations
La fin de cookies suivants peuvent être l'un des trois de l'espace, la tabulation ou retour à la ligne, qui sera abandonné et de ne pas faire partie des "cookies".