C语言创建文件失败求助:写入特殊文本后无法生成文件
问题排查与解决方案
核心问题点及修复步骤
1. 缺失文件操作的错误检查
你的写文件代码没有检查fopen是否成功。如果当前目录无写入权限、路径不存在或文件名非法,fopen会返回NULL,后续的fprintf操作空指针会直接导致程序崩溃,无法完成文件创建与写入。
2. 特殊字符编码与写入验证
代码中的█、░等是UTF-8字符,macOS终端默认支持UTF-8,但需确保编译器处理字符串字面量时使用正确编码(通常默认没问题,但错误检查能排除因编码导致的隐性崩溃)。
3. 当前目录确认
运行程序时的终端当前目录可能并非你预期的位置,可通过pwd命令查看,或直接使用绝对路径测试文件写入。
修复后的代码
#include <stdio.h> #include <stdlib.h> int main() { FILE *fptr; // 打开文件并检查是否成功 fptr = fopen("emile1.txt", "w"); if (fptr == NULL) { perror("无法打开文件"); // 打印具体错误原因(如权限不足) exit(EXIT_FAILURE); } // 写入特殊字符内容 fprintf(fptr, " _____ _____ \n( ___ )-------------------------------------------------------( ___ )\n | | | | \n | | █████ █████ | | \n | | ░░███ ░░███ | |\n | | ░███ ░███ ██████ ████████ ████████ █████ ████ | | \n| | ░███████████ ░░░░░███ ░░███░░███░░███░░███░░███ ░███ | | \n | | ░███░░░░░███ ███████ ░███ ░███ ░███ ░███ ░███ ░███ | | \n | | ░███ ░███ ███░░███ ░███ ░███ ░███ ░███ ░███ ░███ | | \n | | █████ █████░░████████ ░███████ ░███████ ░░███████ | | \n | | ░░░░░ ░░░░░ ░░░░░░░░ ░███░░░ ░███░░░ ░░░░░███ | | \n | | ░███ ░███ ███ ░███ | | \n | | █████ █████ ░░██████ | | \n | | ░░░░░ ░░░░░ ░░░░░░ | | "); // 关闭文件并检查写入是否完成 if (fclose(fptr) != 0) { perror("关闭文件失败"); exit(EXIT_FAILURE); } return 0; }
运行与验证步骤
- 编译代码:
gcc -o write_file write_file.c - 执行程序:
./write_file - 若出现错误,终端会输出具体原因(如
无法打开文件: Permission denied表示当前目录无写入权限) - 若需确认文件位置,可使用
ls命令查看当前目录,或直接写入绝对路径(如/tmp/emile1.txt)测试
内容的提问来源于stack exchange,提问作者LevelWilson
相关产品推荐
相关产品推荐

