gpt4 book ai didi

C "gets"命令输入只是跳到结束而不是等待我的输入

转载 作者:行者123 更新时间:2023-11-30 20:57:25 28 4
gpt4 key购买 nike

当我尝试运行以下程序时,它会等待名称输入,但在询问 moduleNumber 后 2 秒后跳到末尾。我没有机会输入任何内容。

有人知道为什么会发生这种情况以及我应该采取什么措施来阻止这种情况发生吗?

非常感谢。

#include<stdio.h> 
#include <string.h>

char name[30];
int moduleNumber;

int main(int argc, char **argv)
{ //read name & module amount
printf ("Please enter your name: ");
gets(name);
printf ("How many Modules: ");
gets(moduleNumber);

return 0;

}

最佳答案

我假设您在 Windows 计算机上运行它。它会跳过的原因是 gets() 仅消耗换行符(又名\n)并留下回车符\m ,下一个 gets() 会读取它,因为它已经在标准输入缓冲区中。

正如其他人所说,不要使用 gets()a) 它已被弃用b) 此类功能是主要安全漏洞的根源,并且允许对系统进行黑客攻击。我建议您阅读有关缓冲区溢出的内容

对于用户输入,您应该使用需要输入缓冲区大小的函数

您的代码还存在其他问题,例如未将 moduleNumber 作为指针传递,这会导致核心转储。事实上 gets() 是一个 char*

关于C "gets"命令输入只是跳到结束而不是等待我的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60029201/

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