Je suis assez nouveau pour C, et j'ai un problème avec la saisie de données dans le programme.Entrée dans C. Scanf avant obtient. Problème
Mon code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void) {
int a;
char b[20];
printf("Input your ID: ");
scanf("%d", &a);
printf("Input your name: ");
gets(b);
printf("---------");
printf("Name: %s", b);
system("pause");
return 0;
}
Il permet d'ID d'entrée, mais il saute tout simplement le reste de l'entrée. Si je change la commande comme ceci:
printf("Input your name: ");
gets(b);
printf("Input your ID: ");
scanf("%d", &a);
Cela fonctionnera. Bien que, je ne peux pas changer l'ordre et j'en ai besoin tel quel. Est-ce que quelqu'un peut m'aider ? Peut-être que j'ai besoin d'utiliser d'autres fonctions. Merci!
obtient (3): « Le gets() fonction ne peut pas être utilisé en toute sécurité En raison de son manque de limites de contrôle, et l'incapacité pour le programme appelant. détermine de manière fiable la longueur de la prochaine ligne entrante, l'utilisation de cette fonction permet aux utilisateurs malveillants de modifier arbitrairement la fonction d'un programme en cours par le biais d'une attaque de débordement de mémoire tampon Il est fortement recommandé d'utiliser la fonction fgets() dans tout c ases. (Voir la FSA.) " Ne l'utilisez pas –
Plus brièvement: Si vous utilisez' gets', les ocelots de l'attaque rabique volante vous déchireront les orbites, alors ne le faites pas –
'scanf' est ** evil * * - http://c-faq.com/stdio/scanfprobs.html – jschmier