【发布时间】:2015-12-02 16:38:36
【问题描述】:
你今天好吗。我有一个关于文件名处理的问题:D。我的代码不想工作,它给了我错误的分割。
这个想法是创建唯一的文件名并创建它如果同名的文件已经存在。第一个是没有文件的异常,所以 for 循环从 1 而不是 0 开始。
unistd.h 是必需的!
char fileName[15][100];
sprintf(fileName[0],"output.txt");
FILE *output;
for(int i = 1 ;i < 100; i++){
sprintf(fileName[i],"Output%d.txt",i+1);
//File exists
if(!access(fileName[i],F_OK))
{
//Create and open a file
output = fopen(fileName[i], "w");
break;
}
}
我只需要创建一个 try 函数(比如 while),直到它找到未被占用的名称。我只是将 for 循环放在那里以限制为 100。
【问题讨论】:
-
那么你的问题是什么?
-
"创建它如果同名文件已经存在。"如果同名文件已经存在,那么它不存在独一无二。
-
你真的需要阅读指针。
&fileName[i]?你不断地用新的东西覆盖你的fileName字符串的一部分。和fileName is a string, not an array of strings.fileName[i]` 没有意义 -
fileName 是一个字符串数组。问题是它被视为单个字符串(将
char**传递给sprintf 而不是char*),如果不是警告,这应该是一个错误。也没有为字符串本身分配空间。 -
..啊...又一个没有为字符串分配空间并且对分段错误感到惊讶的人...你们不了解堆和malloc吗?跨度>