C语言 关于文件操作的问题

#include#includeintmain(){charfilea[20];FILE*fp=NULL;structpeople{charname[6];intage;... #include#includeint main(){char filea[20];FILE *fp=NULL;struct people{char name[6];int age;}person;printf("name:\n");gets(person.name);printf("age:\n");scanf("%d",&person.age);printf("fileadress:\n");scanf("%s",filea);fp=fopen(filea,"w");fwrite(&person,sizeof(struct people),1,fp);fclose(fp);getch();}编译器没有提示错误
但是 看红线,名字可以正常输出,但是年龄是一个方框,这是怎么回事???
怎么解决???
展开
 我来答
cdyzxy
推荐于2016-11-12 · TA获得超过2.1万个赞
知道大有可为答主
回答量:1.4万
采纳率:84%
帮助的人:3599万
展开全部
请将fp=fopen(filea,"w");改成fp=fopen(filea,"wb+");
由于是用二进制方式书写文件数据,所以你用文本方式去看时会有问题,如果想回读数据,1个是设计程序读出和用printf打印,2还可以用16进制编辑文件来看数据,但看到的将是数据而非文本。
追问
还是不行
追答
如果你需要将存入的数据用记事本能看,就不要用二进制方式存储数据,而采用文本方式:
#include
void main()
{ char filea[20];FILE *fp=NULL,buffer[256];
struct people { char name[6]; int age; } person;
printf("name:\n"); gets(person.name);
printf("age:\n"); scanf("%d",&person.age);
printf("fileadress:\n"); scanf("%s",filea);
fp=fopen(filea,"w+");
sprintf(buffer,"%s,%d\n",person.name,person.age);
fputs(buffer,fp);

fclose(fp);
getch();
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式