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

传递字符串至bool函数时出现Segmentation fault (core dumped)错误排查

问题分析与修复

你的代码存在两个关键问题,直接导致了段错误:

1. printf调用错误

printf的第一个参数必须是格式字符串,你直接传递checksub("a","a")的返回值(bool类型在C中本质是int,true对应1),程序会把这个数值当作内存地址去读取格式字符串,而地址1属于非法内存区域,因此触发段错误。

正确用法需要指定格式符输出布尔值:

printf("%d\n", checksub("a","a")); // %d输出整数,true为1,false为0
// 或者更直观的文本输出:
printf("%s\n", checksub("a","a") ? "true" : "false");

2. checksub函数缺少默认返回值

当*s1 != *v时,函数没有任何return语句,这属于未定义行为,函数会返回随机的垃圾值,可能引发后续逻辑异常。必须确保函数在所有分支都有明确的返回值:

bool checksub(char *s1, char *v) {
  if (*s1 == *v) {
    return true;
  }
  return false; // 补充分支的返回值
}

修复后的完整代码

#include <stdio.h>
#include <stdbool.h> 

bool checksub(char *s1, char *v) {
  if (*s1 == *v) {
    return true;
  }
  return false;
}

int main(void) {
  printf("%s\n", checksub("a","a") ? "true" : "false");
  return 0;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 13:15:40