0

我有一些代码迭代地将数据附加到文件中,看起来类似于:

for(int i=0; i<number; i++){
  FILE *log_file;
  char name[50];
  sprintf(name,"something_%d.log",i);
  log_file=fopen(name,"a");
  if(log_file == NULL){
    printf("ERROR cannot open file %s",name);
    abort();
  }
  /* Write stuff to file */
  fclose(log_file);
}

看起来很简单吧?如果文件存在并且我有权写入它,它会正常进行;如果文件不存在并且我有权在目录中写入文件,它会正常创建文件。错误的!不知何故,当我遇到特定的文件名 ( MINI_3f_1_0.log) 时,程序无法创建/打开文件并产生log_file = NULL. 显然这不是我的全部代码,最糟糕的是我无法用如图所示的简单程序重现这个问题。

我已经花了几个小时试图追踪正在发生的事情,到目前为止,我 100% 确定以下几点:

  1. 文件在同一范围内声明、打开和关闭
  2. 同名文件未在任何其他功能/整个程序中打开
  3. 我有权在目录中读/写
  4. 尝试以迭代顺序打开文件在同一例程中完成时会产生相同的错误

你们可以给我的任何指导将不胜感激。如果你在你的经历中遇到过这样的事情,你是如何解决的?

4

1 回答 1

0

正如 Mat 在评论中所建议的那样,在不同的目录中运行代码不会产生错误。文件系统可能有问题,需要由系统管理员检查。

于 2012-05-17T17:45:04.440 回答