c程序中的运行时错误
下面的代码给出了运行时错误,我就是找不到代码中的错误。那么,如果有人可以帮助我c程序中的运行时错误,c,C,下面的代码给出了运行时错误,我就是找不到代码中的错误。那么,如果有人可以帮助我 #include<stdio.h> int main() { int a = 0; while(1){ scanf("%d",&a); if(a==42) break; printf("%d\n",a); } return 0; } 如果要扫描用户输入,直到按下有效输入,可以使用以下代码
#include<stdio.h>
int main() {
int a = 0;
while(1){
scanf("%d",&a);
if(a==42)
break;
printf("%d\n",a);
}
return 0;
}
如果要扫描用户输入,直到按下有效输入,可以使用以下代码:
#include <stdio.h>
int main() {
char a = 0;
while(1){
scanf("%c",&a);
if(a==42)
break;
printf("%d\n",a);
}
return 0;
}
此代码不挂起任何输入,但它会逐个字符地处理输入,因此您可能会在控制台上看到类似10的内容,因为您需要输入。为了结束这个程序,如果我们使用ascii编码,有效的用户输入是*
正如您在scanf中看到的:
成功时,这些函数返回输入项目的数量
成功匹配和分配;这可能比提供的要少
如果早期匹配失败,则为,甚至为零
它将返回成功匹配的输入数,以便您可以检查此值,以确保您的代码在输入缓冲区上取得进展。使用调试器的时间到了。void main是一个非法的签名。我可以看到这个程序如何挂起无效的输入,但我不确定它会如何崩溃。void main{->int mainvoid{….返回0;如果scanf发现它无法处理的输入,例如abc,当它需要一个数字时,输入仍保留在缓冲区中,并且scanf的头一直撞在墙上。请测试scanf的返回值。它会告诉您扫描了多少个项目。显示您的输入。这意味着如果ASCII编码必须键入*以结束程序,用户将无法处理@风向标谢谢你们的提醒,我在回答中补充道。