Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 什么';“这有什么不对吗?”;简单的;代码_C - Fatal编程技术网

C 什么';“这有什么不对吗?”;简单的;代码

C 什么';“这有什么不对吗?”;简单的;代码,c,C,我正试着做一个非常简单的任务 检查文件是否存在 如果没有,那就做吧 这些文件应该命名为:M0 M1 M2等等。 这是我写的代码。它适用于M0,之后我得到分段错误: #include <stdio.h> #include <stdlib.h> #include <unistd.h> int main (){ unsigned int fileIndex=0; char* fileName="M0"; FILE* recordFile

我正试着做一个非常简单的任务

  • 检查文件是否存在
  • 如果没有,那就做吧
  • 这些文件应该命名为:M0 M1 M2等等。 这是我写的代码。它适用于
    M0
    ,之后我得到
    分段错误

    #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;
    }
    
    #包括
    #包括
    #包括
    int main(){
    无符号int fileIndex=0;
    char*fileName=“M0”;
    FILE*recordFile=NULL;
    while((访问(文件名,F_OK)!=-1)){
    fileIndex++;
    sprintf(文件名,“M%d”,文件索引);
    printf(“%s\n”,文件名);
    }
    recordFile=fopen(文件名为“wb+”);
    fclose(记录文件);
    返回0;
    }
    

    知道我做错了什么吗?提前谢谢

    您正在写入字符串文本,该文本通常存储在只读内存中

     char* fileName="M0";
    
    将其更改为一个数组,该数组是文本的副本,以解决当前问题

    char fileName[]="M0";
    
    但是,如果超过
    10
    ,则可能会遇到存储问题,因此最好分配更大的缓冲区以容纳更大的文件名长度

    char fileName[10] = "M0";
    

    您正在写入字符串文字,该文字通常存储在只读内存中

     char* fileName="M0";
    
    将其更改为一个数组,该数组是文本的副本,以解决当前问题

    char fileName[]="M0";
    
    但是,如果超过
    10
    ,则可能会遇到存储问题,因此最好分配更大的缓冲区以容纳更大的文件名长度

    char fileName[10] = "M0";
    

    那么你的解决方案建议是什么呢?谢谢你的回答,我不允许接受,直到8点min@Engine,非常欢迎。顺便说一句,你可能会注意到这种情况经常发生,有人会发布一个答案,然后对其进行编辑:)那么你的解决方案建议是什么呢?谢谢你的回答,我不允许接受它,直到8点min@Engine,非常欢迎。顺便说一句,您可能会注意到这种情况经常发生,有人会发布答案,然后对其进行编辑:)重复问题会自动链接到您问题的正上方。重复问题会自动链接到您问题的正上方。