无法打开要追加的特定文件名

时间:2012-05-17 17:08:40

标签: c file-io printf

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

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. 中读/写
  5. 尝试从迭代顺序中打开文件会在同一例程中完成同样的错误
  6. 你们/ gals给我的任何指导都将不胜感激。如果你在经历中遇到过这样的事情,你是如何解决的?

1 个答案:

答案 0 :(得分:0)

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