从函数返回 FILE 指针并在 main 上处理它

mik*_*ubi 5 c pointers file

我试图将FILE某个函数的指针返回到main(). 之后,我尝试fprintf在指针上做一些事情,但没有奏效。这是我的代码:

我的功能:

FILE *create_file(void){

    FILE *regularTxt = NULL;
    regularTxt = fopen("MyLogExamplekkggggggk.txt", "wt");
    if (!regularTxt){
        printf("error with regtxt");
        getchar();
        return 1;
    }
    char first_part_string[] = "kkkkik";
    fprintf(regularTxt, "%s\n\n\n%s", "ttttg", "lklf");
    return regularTxt;
}
Run Code Online (Sandbox Code Playgroud)

该main函数:

int main(void)
{
    p_txt = create_file();
    fprintf(p_txt, "%s\n\n\n%s", "gggg", "lklf");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

错误:

错误 92 错误 C4703:使用了可能未初始化的局部指针变量“p_txt”

For*_*Bru 1

您似乎在这里将警告视为错误。我认为您应该首先检查返回的值以NULL消除此错误:

FILE *p_txt = create_file();

if (! p_txt) {
    fprintf(stderr, "[!] Failed to open the file!\n");
    return 1;
} else {
    fprintf(p_txt, "%s\n\n\n%s", "gggg", "lklf");
}
Run Code Online (Sandbox Code Playgroud)

另外,当您进入 时if (!regularTxt),您将从返回指针的函数中返回一个。最好NULL还是返回。