【发布时间】:2014-04-13 13:15:42
【问题描述】:
我已经把这段代码写成一个更大的程序的一部分:
main()
{ int num;
char word[50];
list_head=NULL;
while(1)
{
puts("Give number : ");
scanf("%d",num);
if (num==0) break;
printf("Give name : ");
gets(word);
if (strcmp(word,"")==0) break;
add_node_to_list(num,word);
}
当我运行程序时,屏幕上会出现“给号码:”消息,当我给号码时,会出现一条消息(“程序没有响应并将关闭”),就像万一发生的情况一样无限循环。我通过调试推断出问题是scanf,但我不确定。
【问题讨论】:
-
试试这个
scanf("%d%*c", &num); -
希望你的大程序不要像上面的sn-p那样缩进。
-
不要使用
gets(),输入过多会导致缓冲区溢出。