C语言 在一个函数中写入文件后,无法在另一个函数中读取该文件

hgc7kmma  于 2022-12-11  发布在  其他
关注(0)|答案(1)|浏览(202)

我想在一个名为func1的函数中写入一个文件,在main中读取这个文件,并将该行存储在字符串fname中。

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

  int func(){

    FILE *fp=NULL;
       if ( ( fp= fopen("file.dat","w+")) == NULL){
                printf("Couldn't open file file.dat \n");
                exit(-1);
        }
    fprintf(fp,"%s \n","This is file.dat");
    return(0);
    } 

int main(){

        FILE *fp;
        char fname[1000]="stringInit";
        func();
        if ( ( fp= fopen("file.dat","r")) == NULL){
                printf("Couldn't open file file.dat \n");
                exit(-1);
        }

        fgets(fname,1000,fp);
        printf(" fname = %s \n",fname);

        fclose(fp);

 return(0);

 }

我得到了fname= stringInit,我猜是因为file.dat没有被创建,因为它只在main的末尾被关闭。所以我的问题是:除了在函数func中使用字符串数组之外,还有其他解决方案吗?

olqngx59

olqngx591#

您需要关闭文件:

int func(){

    FILE *fp=NULL;
       if ( ( fp= fopen("file.dat","w+")) == NULL){
                printf("Couldn't open file file.dat \n");
                exit(-1);
        }
    fprintf(fp,"%s \n", "This is file.dat");
    fclose(fp);
    return(0);
}

您也可以传回档案控制代码:

FILE *func(void){

    FILE *fp=NULL;
       if ( ( fp= fopen("file.dat","w+")) == NULL){
                printf("Couldn't open file file.dat \n");
                exit(-1);
        }
    fprintf(fp,"%s \n", "This is file.dat");
    return fp;
} 

int main(void){

    FILE *fp;
    char fname[1000]="stringInit";
    fp = func();
    if (fp == NULL){
            printf("Couldn't open file galactic_coord.dat \n");
            exit(-1);
    }
    fseek(fp, 0, SEEK_SET);

    fgets(fname,1000,fp);
    printf(" fname = %s \n",fname);

    fclose(fp);

    return(0);
}

相关问题