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();}编译器没有提示错误
但是 看红线,名字可以正常输出,但是年龄是一个方框,这是怎么回事???
怎么解决??? 展开
但是 看红线,名字可以正常输出,但是年龄是一个方框,这是怎么回事???
怎么解决??? 展开
1个回答
展开全部
请将fp=fopen(filea,"w");改成fp=fopen(filea,"wb+");
由于是用二进制方式书写文件数据,所以你用文本方式去看时会有问题,如果想回读数据,1个是设计程序读出和用printf打印,2还可以用16进制编辑文件来看数据,但看到的将是数据而非文本。
由于是用二进制方式书写文件数据,所以你用文本方式去看时会有问题,如果想回读数据,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();
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询