读书人

关于 将指向数组的指针作为fwrite()

发布时间: 2013-07-01 12:33:04 作者: rapoo

关于 将指向数组的指针作为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];

读书人网 >C语言

热点推荐