fgets不从文件读取字符串

时间:2018-12-27 22:41:23

标签: c arrays file printing

我是C语言的新手,我刚刚开始使用文件。 我有一个代码,它将一些值从数组写入文件,然后我想从文件中打印所有内容。但是,fgets从f中什么也得不到。字符串s为空。我究竟做错了什么? 这是我的代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {

    FILE *f;
    if ((f=fopen("fis.txt","r+"))==NULL) { printf ("Error\n");
        exit(1);
    }

    float *v; int n;
    char s[1000];
    scanf("%d",&n);
    v=malloc(n*sizeof(float)); int x;
    for (int i=0;i<n;i++) {
        scanf("%f",&v[i]);
        x=fprintf(f,"%f\n",v[i]);

        if (x<0) perror("Error:");
    }

    fflush(stdin);
    fgets(s,sizeof(s),f); perror("err ");//NO ERROR
    printf("%d",strlen(s));//it's 0
    printf("%s",s);//nothing
    perror("err ");//NO ERROR
    printf("\n");

    free(v);
    fclose(f);
}

1 个答案:

答案 0 :(得分:1)

您将要读取先前写入的文件。 每次在读写之间切换时,您都需要刷新缓冲区或使用fseek正确定位文件指针(例如,this SO answer)。请注意,您正在刷新stdin,这在这里没有意义(如果有意义,我不确定)。

像这样的呼叫

fseek(f,0,SEEK_SET)

在您的第一个fgets应该会解决问题之前。

相关问题