【问题标题】:How to solve segmentation error in C program [closed]如何解决C程序中的分段错误[关闭]
【发布时间】:2021-03-07 01:11:21
【问题描述】:

伙计们,我遇到了一个分段错误,这个错误更具体:

Segmentation fault

有谁知道如何解决这个问题?我的代码很简单,不知道为什么会报错,有人知道如何一步步解决吗?

我正在使用此命令将我的 c 文件转换为可执行文件gcc test.c -o test,然后我使用./test 运行我的test 文件,但随后我收到了上面所说的错误。

我在 c 中的代码:

#include <stdio.h>

int main(){
int age;
int aget;
int total;
printf("Input your age: ");
scanf("%i", &idade);
printf("Input your age two: ");
scanf("%i", &age);
base = age + aget;
printf(total);
return 0;
}

【问题讨论】:

  • base 未声明
  • printf 代表 print formatted - 所以你需要提供一个格式字符串
  • "然后我运行我的测试" 你不能运行它,因为它不能编译。请贴出真实代码。
  • 这甚至不会编译,所以无论你运行什么都和你显示的不一样。
  • 朋友,我正在从我的文件test.c 发布代码我使用此代码gcc test.c -o test 为我生成测试可执行文件,然后我运行它,但我在c 中的代码来自文件test.c 明白了吗?

标签: c printf


【解决方案1】:

printf 需要一个格式字符串。这里我们需要告诉它%d 表示十进制整数。

total = idade + age;
printf("%d\n", total);

一些关于如何使用 printf 的随机资源:https://man7.org/linux/man-pages/man3/printf.3.html

【讨论】:

    【解决方案2】:

    变量base 未声明。 变量idade 未声明。 如果您使用的是 base,则应该是 printf("%d",base)

    #include <stdio.h>
    
    int main(){
        int age;
        int aget;
        int total;
        printf("Input your age: ");
        scanf("%i", &age);
        printf("Input your age two: ");
        scanf("%i", &aget);
        total = age + aget;
        printf("%d",total);
        return 0;
    }
    

    【讨论】:

    • 对不起,这是我的错误,但是分段失败错误仍然存​​在,在显示总值之前添加% d后解决了问题,谢谢,我还在学习c。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-21
    相关资源
    最近更新 更多