文件已创建,但是函数WriteFile无法在文件中写入,我需要在函数中创建文件,而不是在主目录中。

    #include <stdio.h>
    #include <stdlib.h>

    void CreateFile(FILE *file){
        file = fopen("file.txt","w");
        if(file == NULL){
            printf("Error : Could not create the file");
        }
    }
   void WriteFile(FILE *file){
        fprintf(file,"Hello !");
    }

    int main()
    {
        FILE *file = NULL;
        CreateFile(file);
        WriteFile(file);
        fclose(file);
        return 0;
    }

最佳答案

问题不在于文件,而是您对指针的使用。在C语言中,函数参数按值传递:这意味着在代码中调用CreateFile(file);时,将给出file的值,即NULL
您有两种方法可以解决此问题,可以使用双指针:

void CreateFile(FILE **file);


像这样调用函数:

FILE *file;
CreateFile(&file);


或者,您可以returnCreateFile()的值:

FILE *CreateFile(void);
FILE *file = CreateFile();


(编辑:我没有看到@Hans PetterTaugbølKragset的答案...)

关于c - 如何在函数中创建文件并在其他函数中使用它,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46347681/

10-12 12:29
查看更多