首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于 将指向数组的指针作为fwrite()的参数解决办法

2013-07-01 
关于 将指向数组的指针作为fwrite()的参数看最后,fwrite()第一个参数用数组名seatinfo完全正确,但为什么用

关于 将指向数组的指针作为fwrite()的参数
看最后,fwrite()第一个参数用数组名seatinfo完全正确,但为什么用ps 就会出现错误,
第一次运行用ps时, 向文件写入的内容不一样。ps指向seatinfo 吗?

for (index = 0; index < SEATS; index++)
{
ps[index] = &seatinfo[index];
}
if ((fp = fopen ("ticket.txt", "rb")) == NULL)  
{
puts ("Can't open ticket.");
exit (1);
}
if (fread (seatinfo, size, SEATS, fp) != SEATS)
{
for (index = 0; index < SEATS; index++)
{
seatinfo[index].num = index + 1;
seatinfo[index].flag = EMPTY;
}
}
fclose (fp);
if ((fp = fopen("ticket.txt", "wb")) == NULL)
{
printf ("Can't open file.\n");
exit (2);
}
fwrite (ps, size ,SEATS, fp);       //为什么这里不能用指针ps作为参数,ps 不是指向数组seatinfo吗?
fclose (fp);

[解决办法]

for (index = 0; index < SEATS; index++)
{
    ps[index] = &seatinfo[index];
}

ps哪里指向seatinfo了。。上面那段明明就是ps[index]指向seatinfo[index]。。所以ps[0]才指向seatinfo。。
你想ps指向seatinfo应该直接
ps = seatinfo;

或者
ps = &seatinfo[0];

热点排行