我正在尝试使用gets来存储名称/小短语
它应该保存 39 个字符,但在我输入第一个字符后,它返回到上一个循环。 (我有一个在主屏幕上显示内容时执行的操作)
为什么它没有按预期工作?
char nome[40];
printf("\nNome do Equipamento: ");
gets(nome);
strcpy(eq[n].nomeEquipamento, nome);
最佳答案
在您提供的链接中,在 gets
之前有一个 scanf
调用
printf("\nCodigo do Equipamento: ");
scanf("%d",&codigo);
eq[n].codDipositivo=codigo;
printf("\nNome do Equipamento: ");
gets(nome);
按 Enter 键后,scanf
调用会留下 \n
字符。 \n
字符由 gets
读取,这就是您面临此问题的原因。
要使用此 \n
,请在 scanf
之后使用 getchar
星号;
printf("\nCodigo do Equipamento: ");
scanf("%d",&codigo);
getchar(); // To comsume '\n'
eq[n].codDipositivo=codigo;
printf("\nNome do Equipamento: ");
gets(nome);
现在关于获取
;很高兴看到邪恶得到
现在已成为历史。请改用 fgets
。
并且也不要使用 strcpy
,而是可以使用 strncpy
(使用之前,请仔细阅读提供的链接)。
关于c - gets 打破了 C 上的循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21043750/