我正在尝试使用获取来存储名称/小短语
它应该包含39个字符,但在我输入第一个字符后,它返回到上一个周期。 (我有一个Do While While主要内容)
为什么它不能正常运作?
char nome[40];
printf("\nNome do Equipamento: ");
gets(nome);
strcpy(eq[n].nomeEquipamento, nome);
答案 0 :(得分:1)
在您提供的链接中,scanf
gets
来电
printf("\nCodigo do Equipamento: ");
scanf("%d",&codigo);
eq[n].codDipositivo=codigo;
printf("\nNome do Equipamento: ");
gets(nome);
按 Enter 键后,scanf
调用会留下\n
个字符。这个\n
字符由gets
读取,这就是您遇到此问题的原因
要使用此\n
,请在getchar
之后使用scanf
。
printf("\nCodigo do Equipamento: ");
scanf("%d",&codigo);
getchar(); // To comsume '\n'
eq[n].codDipositivo=codigo;
printf("\nNome do Equipamento: ");
gets(nome);
现在关于gets
;很高兴认为邪恶gets
现在是历史。请改用fgets
并且也不要使用strcpy
,而是可以使用strncpy
(在使用之前,请仔细阅读提供的链接)。