gpt4 book ai didi

C 编程浅线修复

转载 作者:行者123 更新时间:2023-11-30 19:47:00 26 4
gpt4 key购买 nike

我下面有一个主要函数,但是,该行 - gets(newstring);永远不会得到提示,并且程序会跳过获取和插入行,我被告知这可能是浅行问题,但我不知道这是什么意思以及如何修复它,请帮助,谢谢,

int main() {
char newstring [25];
int removeelem;
int findelem;

struct data_node *first=NULL, *ptr;

printf ("Enter list command (+-flx): ");
scanf (" %c", &key);

switch (key) {
case '+':
printf ("+ detected \n");
printf ("Enter key data: \n");
scanf ("%D", &newelem);
printf ("What string to store? \n");
gets(newstring);
insert(&first, newelem,newstring);
break;
}
}

最佳答案

scanf ("%D", &newelem);

当您输入号码时,您按了“返回”键。 '\n' 符号仍保留在文件缓冲区中,因为您还没有要求 scanf 读取它。下次您调用 gets 时,它会读取一行,即 0 个符号 - 它会立即看到 '\n'

要解决您的问题,您需要手动删除 '\n'(例如通过虚拟 gets),或使用

scanf ("%D\n", &newelem);

顺便说一句,尽量避免获取。这个函数很危险,因为它不知道缓冲区的大小限制,任何现代编译器都会大声警告你不要使用它。尝试改用fgets

关于C 编程浅线修复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22787774/

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