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

C语言实现输出文本文件中含指定字母的单词 用户编写的代码报core dumped错误

文件单词搜索程序核心转储问题排查

原代码运行触发核心转储、功能无法正常实现的原因共6处,逐点说明:

  • fopen传参错误:fopen(path, 'r') 中打开模式参数需要是双引号包裹的字符串常量"r",单引号包裹的'r'是整数类型值,会被fopen当成无效的文件地址指针读取,直接触发野指针访问。
  • 栈溢出触发崩溃:代码中定义char letter[1]存储搜索字符,但scanf("%s", letter)读取字符串时会自动在末尾追加'\0'字符串结束符,仅1字节的数组无法容纳结束符,会溢出覆盖栈上存储的函数返回地址,这是core dump的最主要诱因。
  • 字符串比较逻辑错误:C语言中直接用==对比两个字符串时,对比的是两块内存的起始地址,不是字符串的实际内容,原代码写的if (str == letter)永远不会匹配到有效内容,完全达不到搜索效果。
  • 功能逻辑偏差:原代码读取整行内容后直接做对比,没有对行内容做单词拆分,就算修正字符串比较逻辑,也只能匹配整行和搜索内容完全一致的情况,无法实现“打印文件中所有包含指定字母的单词”的需求。
  • printf参数使用不规范:原代码写printf(letter),将用户输入的搜索内容直接作为printf的格式字符串,如果用户输入内容包含%这类格式转义符,会直接触发未定义行为导致崩溃。
  • 函数定义不符合规范:按照C语言标准,main函数的返回值类型应当为int,原代码写的void main()属于非标准写法;findWord函数声明返回值为int,但函数内部没有任何返回语句,属于逻辑不完整。
修正后可正常运行的代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define BUFFER_SIZE 1000
// 定义单词的分隔符集合,覆盖常见的空白、标点分隔场景
#define WORD_DELIMITERS " \t\n\r,.;:!?-()[]{}'\""

void findWord(FILE *file, char target);

int main()
{   
    FILE *file; 
    char path[100];
    char target_char;

    printf("Enter file path: ");
    scanf("%s", path);

    printf("Enter letter to search in file: ");
    // 格式串前加空格,跳过输入缓冲区残留的换行符,避免直接读入换行
    scanf(" %c", &target_char);

    file = fopen(path, "r");

    if (file == NULL)
    {
        perror("Unable to open file");
        exit(EXIT_FAILURE);
    }
    
    findWord(file, target_char);
    
    fclose(file);
    return 0;
}

void findWord(FILE *file, char target)
{
    char line_buf[BUFFER_SIZE];
    char *word;

    // 逐行读取文件内容
    while (fgets(line_buf, BUFFER_SIZE, file) != NULL)
    {
        // 按分隔符拆分行内的独立单词
        word = strtok(line_buf, WORD_DELIMITERS);
        while (word != NULL)
        {
            // 检查当前单词是否包含目标字符
            if (strchr(word, target) != NULL)
            {
                printf("%s\n", word);
            }
            // 继续拆分当前行的后续单词
            word = strtok(NULL, WORD_DELIMITERS);
        }
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.24 10:06:10