C do while未按预期工作
我是c语言的新手,在链表上用c语言编写程序。这是一个简单的程序。C do while未按预期工作,c,gcc,do-while,C,Gcc,Do While,我是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) : ");
我用它来输入号码列表,直到用户想要 守则如下:
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编译器编译并运行它。Put:getchar()
以前
choice=getchar()代码>
使用scanf()
之后留在stdin
中的\n
字符
然后,代码将导致:
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');
Put:getchar()
以前
choice=getchar()代码>
使用scanf()
之后留在stdin
中的\n
字符
然后,代码将导致:
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');
您的scanf
读取一个数字并停止从stdin
读取,但当您输入一个数字时,您会发送该数字加上\n
字符。这就是getchar()
读取的内容。它不是y
或y
,因此循环结束
使用以下命令更改getchar()
行:
scanf(" %c", &choice);
…它应该可以工作。您的scanf
读取一个数字并停止从stdin
读取,但当您输入一个数字时,您会发送该数字加上\n
字符。这就是getchar()
读取的内容。它不是y
或y
,因此循环结束
使用以下命令更改getchar()
行:
scanf(" %c", &choice);
…它应该会起作用
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');
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');
if(DidYouDownVote())coutif(DidYouDownVote())cout您的代码不工作:scanf(“%c”)
是否收到\n
。在%c
之前,您需要一个额外的空间来清除所有空格、制表符和换行符谢谢您指出我:)修复了答案。您的代码无效:scanf(“%c”)
确实收到了\n
。在%c
之前,您需要一个额外的空间来清除所有空格、制表符和换行符谢谢您指出我:)修复了答案。谢谢。。。这对我有用。谢谢。。。这对我有用。