从文件中读取结构体中变量值不正确(每次都是固定值)!

shuirh 2009-02-25 05:40:09
#include <stdio.h>

struct person
{
char name[20];
int phonenumber;
};

main()
{
FILE *fp = NULL;
struct person buffer[100];

printf( "please input the name and phonenumber:" );
scanf( "%s%d", buffer[0].name, &buffer[0].phonenumber );

fp = fopen( "backup.txt", "wb" );

fwrite( &buffer[0], sizeof ( struct person ), 1, fp);
close( fp );

fp = fopen( "backup.txt", "rb");
fread( &buffer[0], sizeof ( struct person ), 1, fp);
printf("%s,%d\n", buffer[0].name, &buffer[0].phonenumber);
close( fp );
}

phonenumber这个变量无论你输入的值是多少,输出都是1242672,这是什么怪事???
如何修改???
...全文
228 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
waizqfor 2009-02-25
  • 打赏
  • 举报
回复

#include <stdio.h>

struct person
{
char name[20];
int phonenumber;
};

main()
{
FILE *fp = NULL;
struct person buffer[100];

printf( "please input the name and phonenumber:" );
scanf( "%s%d", buffer[0].name, &buffer[0].phonenumber );

fp = fopen( "backup.txt", "wb" );

fwrite( &buffer[0], sizeof ( struct person ), 1, fp);
close( fp );

fp = fopen( "backup.txt", "rb");
fread( &buffer[0], sizeof ( struct person ), 1, fp);
printf("%s,%d\n", buffer[0].name, buffer[0].phonenumber); //printf和scanf形式不同
fclose( fp ); //注意关闭文件的函数写法
}
Dinelgua 2009-02-25
  • 打赏
  • 举报
回复
打印的是地址

不过 也不怪楼主 printf 与 scanf的参数形式不一致性 也确实一大弊病
yanxiaotao 2009-02-25
  • 打赏
  • 举报
回复
考,这错误你都能犯!
xxweilw 2009-02-25
  • 打赏
  • 举报
回复
printf("%s,%d\n", buffer[0].name, &buffer[0].phonenumber); 多了一个&符号,难怪每次都是一样
shuirh 2009-02-25
  • 打赏
  • 举报
回复
出鬼了,我把int phonenumber;改成int phonenumber[10];就正确了,这是为虾米啊????
shuirh 2009-02-25
  • 打赏
  • 举报
回复
我从头跟踪到尾,都正确,就是输出的时候成了1242672,真是没见过.

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧