[英]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.