用C语言读取文件不是';不行吗?
所以我试着四处看看,却找不到答案。我试图从另一个程序中写入的文件中读取数据。写它很好,但当我尝试阅读它时,根本没有输出。这是密码用C语言读取文件不是';不行吗?,c,file,C,File,所以我试着四处看看,却找不到答案。我试图从另一个程序中写入的文件中读取数据。写它很好,但当我尝试阅读它时,根本没有输出。这是密码 struct data{ int tp, gpm, deg; }; int main() { struct data list[21]; int p[21]; list[0].tp = 10; FILE * fout; fopen("data_list", "r"); for(int i = 0; i <
struct data{
int tp, gpm, deg;
};
int main()
{
struct data list[21];
int p[21];
list[0].tp = 10;
FILE * fout;
fopen("data_list", "r");
for(int i = 0; i < 21; i++){
fscanf(fopen, "%d:\t%d\t%d\t%d\n", &p[i], &list[i].tp, &list[i].gpm, &list[i].deg);
}
for(int i = 0; i < 21; i++){
printf("%d:\t%d\t%d\t%d\n", p[i], list[i].tp, list[i].gpm, list[i].deg);
}
fclose(fout);
return 0;
}
有人能帮我吗?我学C才几个月,大部分都是自学的
fscanf(fopen, "%d:\t%d\t%d\t%d\n"
我不知道它是如何编译的,但您正在传递一个函数指针,其中需要文件*
。这肯定不会正常工作
正确的传递方式是调用
fopen()
的返回值(此时您正在丢弃该值)。看起来您希望在fscanf中读取的选项卡不在输入文件中。write out=fopen(“数据列表”,“r”);并将fscanf()第一个参数保持为out。如@achal所述,fopen
返回指向新打开文件的指针。然后将此句柄用作其他文件相关函数(如fscanf和fclose)的标识符。不要尝试使用%d
格式说明符读取scanf
中的空白。假设有两个标签?%d
格式说明符(但不是全部)会自动过滤前导空格。如果((fout=fopen(“data_list”,“r”)==NULL){exit(1);}
所以我用这个fscanf(fout,“%d%d%d%d”,&p[I],&list[I].tp,&list[I].gpm,&list[I].deg)调整了这一行(在实际查看了它之后,我也不敢相信它被编译了);但它还是什么也没给我。我还实际使用了fout,并用fout=fopen(“数据列表”,“r”)定义它;但它仍然不起作用。
fscanf(fopen, "%d:\t%d\t%d\t%d\n"