Comment utiliser scanf pour un char array d'entrée?
J'ai mis un char tableau de taille 10 et que vous souhaitez vérifier la taille réelle de l'entrée autorisé.
J'ai testé
123456789; 1234567890; 123456789123456789
Il est intéressant de noter, tous ont passé et obtenu le droit de sortie qui sont
123456789; 1234567890; 123456789123456789
Il me troublait beaucoup, parce que je pensais que les deux derniers sont faux l'entrée.
Cela fait sens, ou est-il un compilateur différence?
C'est le code
#include <stdio.h>
main()
{
char input[10];
scanf("%s", input);
printf(input);
} '
OriginalL'auteur cyis | 2015-02-06
Vous devez vous connecter pour publier un commentaire.
La
scanf()
avec le spécificateur de format%s
analyse l'entrée jusqu'à ce qu'un espace est rencontré. Dans votre cas, ce que vous voyez est un comportement indéfini.Votre tableau peut contenir 10
char
s, mais vous êtes l'écriture de ses limites.Tandis que vous obtenez une réponse attendue maintenant, ce n'est pas toujours guarnateed et peut provoquer un plantage.
Il est conseillé d'utiliser une fonction comme
fgets()
prend soin de débordement de la mémoire tampon.OriginalL'auteur Gopi
Vous pouvez utiliser
OriginalL'auteur Ahmad Yoosofan