eclipse 如何确定C程序输出意外消息的原因?

6qqygrtg  于 2022-11-04  发布在  Eclipse
关注(0)|答案(2)|浏览(138)

我尝试在Eclipse上用C语言编程,我已经安装并配置了MinGW,但是我遇到了一个问题,我不明白:
我有一些简单的代码:


# include <stdio.h>

# include <stdlib.h>

int main(void) {

    int num1,num2;

    setbuf(stdout,NULL);

    printf("enter two numbers");
    scanf("%d%d",&num1,&num2);

    if(num1>num2){
        printf("num1 is greater than num2");

    }else{
        printf("num2 is greater than num1);
    }

    return 0;
}

在我编译并运行后,它显示“Enter two numbers”(输入两个数字),我输入了两个数字,我看不到任何进一步的输出,键盘功能在控制台屏幕上不起作用,它没有给予我一个错误,但它确实在控制台上显示了一些奇怪的输出:

<terminated>

<terminated>(exit value: -1.073.741.515) CPS:exe
klsxnrf1

klsxnrf11#

您没有正确阅读值:

scanf("%d%d",num1,num2);

scanf%d说明符需要一个int *(即指向int的指针)作为参数。它需要一个变量的地址,以便能够将值写入存储该地址的位置。
相反,您传递的是num1num2的当前值,这些值实际上是垃圾值,因为变量尚未写入。
相反,您希望:

scanf("%d%d",&num1,&num2);
f3temu5u

f3temu5u2#

我不知道你发布的代码是否与你编译的完全相同,当我复制并编译你发布的代码时,gcc报告了一个错误,位于行:

printf("num2 is greater than num1);

printf()中缺少结束引号;在我修复了这个错误之后,它运行得很好。我的环境是
Linux桌面-7VH 0 PN 1 5.4.72-微软标准-WSL 2 #1 SMP星期三10月28日23:40:43 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
使用gcc:
版权所有(C)2019年自由软件基金会有限公司.

相关问题