簡體   English   中英

fgets 不從文件中讀取字符串

[英]fgets doesnt read string from file

我是 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);
}

您要從之前寫入的文件中讀取數據。 每次在讀取和寫入之間切換時,您都需要刷新緩沖區或使用fseek正確定位文件指針(例如,參見這個 SO answer )。 請注意,您正在刷新stdin ,這在這里沒有意義(如果有意義,我不確定)。

所以一個電話就像

fseek(f,0,SEEK_SET)

在你的第一個fgets應該解決問題之前。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM