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

DevC++环境下C语言新手无法读取input.txt文件求助

解决DevC++中无法打开input.txt的问题

嘿,刚入门C语言就碰到文件操作的坑很正常,别着急!我来帮你一步步排查这个“Cant open file”的问题:

最常见的原因:文件位置不对

DevC++在运行程序时,默认会从程序的当前工作目录查找文件,这个目录通常是:

  • 如果你用DevC++创建了项目,那就是你的.dev项目文件所在的文件夹;
  • 如果是直接打开单个.cpp文件编译运行,那就是这个.cpp文件所在的文件夹。

你可以试试这两种方法:

  • 把input.txt直接复制到上面说的那个文件夹里;
  • 或者在fopen里用绝对路径,比如你的文件在桌面,路径要写成:
    inputfile = fopen("C:\\Users\\你的用户名\\Desktop\\input.txt", "r");
    
    注意Windows路径里的反斜杠要写两个(\\),因为C语言里单个反斜杠是转义字符。

容易忽略的细节:文件名拼写错误

检查一下你的文件名是不是完全匹配:

  • 有没有多打或少打字母?比如写成input.txtt或者input.tx;
  • Windows系统虽然不区分大小写,但最好保持一致,别写成Input.txt或者INPUT.TXT(虽然大部分时候没问题,但新手还是尽量严格匹配更稳妥)。

其他可能的原因:文件被占用

如果你的input.txt正在被其他程序打开(比如记事本、WPS),可能会导致C程序无法读取它,先关掉所有打开这个文件的程序再试试。

你的代码里还有个隐藏坑!

当inputfile为NULL时,你的程序只打印了错误提示,但还是会继续执行后面的fscanf,这会导致程序崩溃(因为访问了空指针)!一定要在打开失败后退出程序,修改后的代码如下:

#include <stdio.h>
#include <stdlib.h> // 如果用exit()的话需要这个头文件

int main() {
    int T; 
    char command; 
    FILE *inputfile; 
    
    inputfile = fopen("input.txt", "r"); 
    if(inputfile == NULL) { 
        printf("Cant open file");
        return 1; // 直接退出主函数,避免后续错误操作
        // 或者用 exit(1); 效果一样
    } 
    
    fscanf(inputfile, "%d", &T);
    
    // 记得用完文件后要关闭,养成好习惯
    fclose(inputfile);
    
    return 0;
}

先从文件位置开始排查,这是新手最容易犯的错,应该能解决你的问题~

内容的提问来源于stack exchange,提问作者A. Franciosa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:34:32