You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言运行出现Segmentation fault(core dumped)错误,求解决及原因

C语言代码触发Segmentation Fault错误的原因及修复

错误原因

你代码里的核心问题是printf的字符串参数用了单引号'。在C语言中,单引号仅用于包裹单个字符,而你这里的是多字符的字符串,应该用双引号"。

当你用单引号包裹长字符串时,编译器会将其视为多字符常量,它的值是一个整数。但printf函数的第一个参数要求是字符串指针(const char*),把这个整数当作指针传入后,printf会尝试访问该整数对应的内存地址,这属于非法内存访问,直接触发Segmentation Fault(段错误)。

修复后的代码

#include <stdio.h>

int main() {
  int day = 35;
  if (day > 31)
    printf("Please enter a valid date\n");
  else if (day % 7 == 1)
    printf("Monday\n");
  else if (day % 7 == 2)
    printf("Tuesday\n");
  else if (day % 7 == 3)
    printf("Wednesday\n");
  else if (day % 7 == 4)
    printf("Thursday\n");
  else if (day % 7 == 5)
    printf("Friday\n");
  else if (day % 7 == 6)
    printf("Saturday\n");
  else
    printf("Sunday\n");
  return 0;
}

额外提示

  • 字符串必须用双引号包裹,单引号只能用于单个字符(比如'a')
  • 建议给printf的字符串末尾加上\n换行符,这样输出会立即刷新到终端,避免出现输出不显示的情况

内容的提问来源于stack exchange,提问作者Subrat Mohapatra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 02:31:00