我有一些代码迭代地将数据附加到文件中,看起来类似于:
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% 确定以下几点:
- 文件在同一范围内声明、打开和关闭
- 同名文件未在任何其他功能/整个程序中打开
- 我有权在目录中读/写
- 尝试以迭代顺序打开文件在同一例程中完成时会产生相同的错误
你们可以给我的任何指导将不胜感激。如果你在你的经历中遇到过这样的事情,你是如何解决的?