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

CS50作业speller.c运行报‘Could not open %s’错误求助

CS50 Speller 「Could not open %s.」错误排查方案

核心原因定位

该错误来自speller.c中固定逻辑:只要load函数返回false,就会触发此提示。所以问题本质是你的dictionary.c中load函数未正确完成字典加载,或字典文件无法被正常读取。

逐一排查步骤

  • 检查命令行参数
    运行程序时必须传入字典文件的正确路径,比如字典文件在当前目录下,命令应为:./speller dictionary.txt test.txt,不能遗漏字典文件参数。
  • 核查load函数的文件打开逻辑
    必须使用传入的dictionary参数打开文件,不能硬编码路径。正确的文件打开判断逻辑如下:
    bool load(const char *dictionary)
    {
        FILE *dict_file = fopen(dictionary, "r");
        // 必须判断文件是否打开成功
        if (dict_file == NULL)
        {
            return false;
        }
        // 后续读取单词、构建哈希表等逻辑...
        fclose(dict_file);
        return true;
    }
    
    若你硬编码了路径(比如写死fopen("~/cs50/dict.txt", "r")),当运行环境路径变化时就会打开失败。
  • 检查文件权限
    在终端执行ls -l dictionary.txt查看字典文件权限,若没有读权限,执行chmod +r dictionary.txt添加可读权限。
  • 排查load函数的返回值逻辑
    若文件打开成功,但后续处理(比如内存分配、单词读取)出错,需确保此时也返回false,避免因中间步骤失败却返回true导致的逻辑混乱。

参考speller.c触发错误的固定代码

if (!load(dictionary))
{
printf("Could not open %s.\n", dictionary);
return 1;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 06:03:17