gpt4 book ai didi

c - gets 打破了 C 上的循环

转载 作者:行者123 更新时间:2023-11-30 15:40:23 24 4
gpt4 key购买 nike

我正在尝试使用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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com