下面的代码给出了运行时错误,但我只是找不到代码中的错误,所以有人可以帮助吗?

#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 man page中看到的:


  成功后,这些函数将返回输入项的数量
         成功匹配和分配;可以少于提供的数量
         如果是早期匹配失败,则为零,甚至为零。


它将返回成功匹配的输入的数量,因此您可以检查该值以确保您的代码在输入缓冲区上有进展。

关于c - C程序中的运行时错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44487729/

10-11 23:18
查看更多