如何使用C语言读取text.txt文件内容并输出到终端
问题原因排查与修复方案
代码存在的核心问题
- 未对
fopen的返回值做非空校验,若text.txt文件不存在、路径错误或无读取权限时,fp为NULL,后续fgets操作会触发空指针访问导致程序崩溃。 fclose(fp)被错误放置在while循环内部,第一次循环读取完一行内容打印后,就直接关闭了文件指针,第二次循环调用fgets时操作的是已被释放的无效文件指针,直接导致程序运行异常。- 引入了不必要的头文件
stdlib.h、ctype.h,且main函数缺少标准返回值。
修复后可正常运行的代码
#include <stdio.h> int main() { char str[255]; FILE *fp; // 打开文件同时做非空校验 fp = fopen("text.txt", "r"); if (fp == NULL) { printf("文件打开失败,请检查text.txt是否存在\n"); return 1; } while (fgets(str, 255, fp) != NULL) { printf("%s", str); } // 循环结束后再关闭文件指针 fclose(fp); return 0; }
额外说明
如果执行程序时仍提示文件打开失败,可将text.txt替换为文件的绝对路径(例如Windows下"C:\\test\\text.txt",Linux下"/home/user/text.txt")即可解决路径匹配问题。
内容的提问来源于stack exchange,提问作者ra fik
相关产品推荐
相关产品推荐

