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

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;
}

运行与验证步骤

  1. 编译代码:gcc -o write_file write_file.c
  2. 执行程序:./write_file
  3. 若出现错误,终端会输出具体原因(如无法打开文件: Permission denied表示当前目录无写入权限)
  4. 若需确认文件位置,可使用ls命令查看当前目录,或直接写入绝对路径(如/tmp/emile1.txt)测试

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 15:53:15