我试图做一个非常简单的任务。
文件的名称应为:M0 M1 M2等。
这是我编写的代码。在我获得M0
之后,它适用于segmentation fault error
:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main (){
unsigned int fileIndex=0;
char* fileName="M0";
FILE* recordFile = NULL;
while((access(fileName,F_OK)!=-1)) {
fileIndex++;
sprintf(fileName,"M%d",fileIndex);
printf("%s\n",fileName);
}
recordFile = fopen(fileName,"wb+");
fclose(recordFile);
return 0;
}
知道我在这里做错了什么吗?提前致谢!
答案 0 :(得分:4)
您正在写入一个字符串文字,通常存储在只读存储器中。
char* fileName="M0";
将其更改为一个数组,该数组是文字的副本,以解决当前问题。
char fileName[]="M0";
但是,如果超过10
,您可能会遇到存储问题,因此最好分配一个更大的缓冲区来容纳更大的文件名长度。
char fileName[10] = "M0";