我已经设置了几个printf语句来找到问题,我仍然无能为力。
基本上我创建的数组平面包含12个结构位。
然后我在平面数据中分配每个结构。在这一点上,一切都很好看。
然后我将该数组传递给numberEmptySeats,所有突然的plane [0] .seatID都丢失在酱汁中,而不是最初分配的1。
请帮助我理解为什么会这样。
-------------当前输出-------------
1
Entering numberEmptySeats
1123456789101112
Seats Available: 12
------------期望输出-------------
1
Entering numberEmptySeats
1
Seats Available: 12
代码:
#include<stdio.h>
#include<string.h>
#define SEATS 12
struct seat {
int seatID;
int reserved;
char firstName[20];
char lastName[20];
};
void resetPlane(struct seat ar[],int seats);
void numberEmptySeats(struct seat ar[],int seats);
int main()
{
struct seat plane[SEATS];
resetPlane(plane,SEATS);
printf("%d\n",plane[0].seatID);
numberEmptySeats(plane,SEATS);
}
void resetPlane(struct seat ar[],int seats)
{
int i;
for(i=0;i<seats;i++)
{
ar[i].seatID = i+1;
ar[i].reserved = 0;
strcpy(ar[i].firstName,"Unassigned");
strcpy(ar[i].lastName,"Unassigned");
}
}
void numberEmptySeats(struct seat ar[],int seats)
{
int i,j=0;
printf("Entering numberEmptySeats\n");
printf("%d",ar[0].seatID);
for(i=0;i<seats;i++)
{
if (ar[i].reserved == 0)
{
printf("%d",ar[i].seatID);
j++;
}
}
printf("\nSeats Available: %d\n",j);
}
答案 0 :(得分:3)
在打印第一个ID一次后(也没有换行),您将打印每个可用座位的ID,之后没有换行符。
void numberEmptySeats(struct seat ar[],int seats)
{
int i,j=0;
printf("Entering numberEmptySeats\n");
printf("%d\n",ar[0].seatID); // added newline
for(i=0;i<seats;i++)
{
if (ar[i].reserved == 0)
{
// printf("%d",ar[i].seatID); // drop the extra output
j++;
}
}
printf("\nSeats Available: %d\n",j);
}