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