【发布时间】:2013-09-26 14:51:56
【问题描述】:
我正在学习 c 的 fread 和 fwrite 并制作了一个基本代码来使用 fwrite 在文件中编写结构。输出在
上 #include<stdio.h>
int main()
{
FILE *f;
int i,q=0;
typedef struct {
int a;
char ab[10];
}b;
b var[2];
f=fopen("new.c","w");
printf("Enter values in structure\n");
for(i=0 ; i<2 ; i++)
{
scanf("%d",&var[i].a);
scanf("%s",var[i].ab);
}
fwrite(var,sizeof(var),1,f);
fclose(f);
return 0;
}
输出不流畅,因为它在文件中包含奇怪的字符。我也以二进制模式打开文件,但徒劳无功。这是某种缓冲问题吗?
【问题讨论】:
-
fwrite 的参数可能需要调整。第三个参数有“1”,告诉它你只想输出 1 个元素。对于第二个参数,您需要元素大小,它应该是字节。 (int和char是两种不同大小的粗略,所以共同点是字节大小的输出)。试试
fwrite(var, 1, sizeof(var), f); -
@ryykker,OP 的代码很好。
-
@CarlNorum - 同意,我走了,解决了,使用 fprintf (如你所建议的那样),它工作正常。谢谢。请问您使用什么工具来获取文件偏移、数据和关系列?
-
@ryyker - 我手工制作的。