这个“简单”的代码有什么问题

时间:2014-08-04 22:33:52

标签: c

我试图做一个非常简单的任务。

  1. 检查文件是否存在
  2. 如果没有,请将其设为
  3. 文件的名称应为: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;
    }
    

    知道我在这里做错了什么吗?提前致谢!

1 个答案:

答案 0 :(得分:4)

您正在写入一个字符串文字,通常存储在只读存储器中。

 char* fileName="M0";

将其更改为一个数组,该数组是文字的副本,以解决当前问题。

char fileName[]="M0";

但是,如果超过10,您可能会遇到存储问题,因此最好分配一个更大的缓冲区来容纳更大的文件名长度。

char fileName[10] = "M0";