我是c的新手,并在链接列表中用c编写程序。它是一个简单的程序。
我用它来输入要列出的号码直到用户想要。
代码如下:
do {
system("clear");
printf ("\nEnter a no to add to list : ");
scanf ("%d",&num);
append (&p,num);
display (p);
printf ("\n\nWhant to add more...(Y/N) : ");
choice = getchar();
} while (choice == 'y' || choice == 'Y');
当用户输入选项时,程序退出...
我在linux [ubuntu]上使用gcc编译器来编译和运行它。
答案 0 :(得分:4)
您的scanf
读取一个号码并停止从stdin
读取,但是当您输入一个号码时,您会发送该号码加上\n
个字符。这就是getchar()
所读的内容。它不是y
或Y
,因此循环结束。
使用以下内容更改getchar()
行:
scanf(" %c", &choice);
......它应该有用。
答案 1 :(得分:1)
放:getchar()
;
之前
choice = getchar();
使用\n
之后stdin
内留下的scanf()
字符。
然后代码结果为:
do {
system("clear");
printf ("\nEnter a no to add to list : ");
scanf ("%d",&num);
append (&p,num);
display (p);
printf ("\n\nWhant to add more...(Y/N) : ");
getchar(); //needed to consume the \n character
choice = getchar();
}while (choice == 'y' || choice == 'Y');
答案 2 :(得分:1)
中的下一个字符
getchar()
返回标准输入(stdin
)
在scanf()
语句后按Enter键时,输入缓冲区中累积了\n
个字符。因此,choice
的值自动设置为\n
,循环条件变为false。
您可以使用scanf()
代替getchar()
从stdin
读取格式化数据,最终保留choice
的值。
do {
system("clear");
printf ("\nEnter a no to add to list : ");
scanf ("%d",&num);
append (&p,num);
display (p);
printf ("\n\nWhant to add more...(Y/N) : ");
scanf(" %c", &choice);
} while (choice == 'y' || choice == 'Y');