Comment à l'entrée d'une chaîne à l'aide de scanf en c, y compris les espaces
Exemple si l'utilisateur entre:
My name is James.
Utilisation de scanf, j'ai l'impression de la totalité de la gamme, c'est à dire My name is James.
, puis-je avoir pour obtenir la longueur de cette chaîne saisie et de le stocker dans un int
variable.
Dans la vraie vie, vous pouvez tout simplement utiliser
Dans la vraie vie vous serait également utiliser google. copie Exacte de ce
fgets
.Dans la vraie vie vous serait également utiliser google. copie Exacte de ce
OriginalL'auteur shobhnit | 2011-02-20
Vous devez vous connecter pour publier un commentaire.
Essayer:
Remplacer 80 avec 1 de moins que la taille de votre tableau. Découvrez le scanf de la page de manuel pour plus d'informations
"%80[^\n]"
devrait être suffisant, car unFILE *
ouvert en mode texte (commestdin
) permettra de convertir de Windows/ce que les retours à la ligne à la\n
caractère.OriginalL'auteur Splat
@Splat a la meilleure réponse ici, car ce sont les devoirs et une partie de votre tâche est d'utiliser
scanf
. Cependant,fgets
est beaucoup plus facile à utiliser et offre un contrôle plus précis.Quant à votre deuxième question, vous obtenez la longueur d'une chaîne de
strlen
, et de le stocker dans une variable de typesize_t
. Les stockant dans unint
est faux, parce que nous ne nous attendons pas à des chaînes de -5 longueur. De même, le stocker dans ununsigned int
ou d'un autre type non signé est inappropriée parce que nous ne savons pas exactement comment grand un type intégral est, ni exactement comment beaucoup de place nous avons besoin de stocker la taille. Lesize_t
type existe aussi un type qui est garanti pour être de la bonne taille pour votre système.OriginalL'auteur Chris Lutz
void main()
? Il est 2011. Et de quoi avez-vous besoin declrscr()
?^^ j'ai exécuté ce prgram en TURBO C est pourquoi il sorte
OriginalL'auteur mr_eclair
fflush(stdin)
est un comportement indéterminé.OriginalL'auteur Rohit Kumar