Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
类的C程序:传递结构数组,得到奇怪的结果_C_Arrays_Function_Struct - Fatal编程技术网

类的C程序:传递结构数组,得到奇怪的结果

类的C程序:传递结构数组,得到奇怪的结果,c,arrays,function,struct,C,Arrays,Function,Struct,我已经设置了几个printf语句来查找问题,但我仍然一无所知 基本上,我创建的数组平面包含12个struct座位 然后我指定平面数据内部的每个结构。在这一点上,一切看起来都很好 然后我将该数组传递给numbermptyseats,突然飞机[0]消失在沙司中,而不是原来分配的1 请帮助我理解为什么会发生这种情况 -------------电流输出------------- ------------期望输出------------- 代码: #包括 #包括 #定义座位12 结构座椅{ 国际海洋贸易署

我已经设置了几个printf语句来查找问题,但我仍然一无所知

基本上,我创建的数组平面包含12个struct座位

然后我指定平面数据内部的每个结构。在这一点上,一切看起来都很好

然后我将该数组传递给numbermptyseats,突然飞机[0]消失在沙司中,而不是原来分配的1

请帮助我理解为什么会发生这种情况

-------------电流输出-------------

------------期望输出-------------

代码:

#包括
#包括
#定义座位12
结构座椅{
国际海洋贸易署;
int保留;
charfirstname[20];
char lastName[20];
};
无效重置平面(结构座椅ar[],内部座椅);
无效数量空座位(结构座位ar[],内部座位);
int main()
{
结构座椅平面[座椅];
飞机(飞机、座位);
printf(“%d\n”,平面[0].seatID);
数量(飞机、座位);
}
无效重置平面(结构座椅ar[],内部座椅)
{
int i;

对于(i=0;i在打印第一个id一次(也没有换行符)之后,您正在打印每个可用座位的id,之后没有换行符

void numberEmptySeats(结构座椅ar[],内部座椅)
{
int i,j=0;
printf(“输入numberremptyseats\n”);
printf(“%d\n”,ar[0].seatID);//添加了换行符

对于(i=0;i在打印第一个id一次(也没有换行符)之后,您正在打印每个可用座位的id,之后没有换行符

void numberEmptySeats(结构座椅ar[],内部座椅)
{
int i,j=0;
printf(“输入numberremptyseats\n”);
printf(“%d\n”,ar[0].seatID);//添加了换行符

对于(i=0;i在打印第一个id一次(也没有换行符)之后,您正在打印每个可用座位的id,之后没有换行符

void numberEmptySeats(结构座椅ar[],内部座椅)
{
int i,j=0;
printf(“输入numberremptyseats\n”);
printf(“%d\n”,ar[0].seatID);//添加了换行符

对于(i=0;i在打印第一个id一次(也没有换行符)之后,您正在打印每个可用座位的id,之后没有换行符

void numberEmptySeats(结构座椅ar[],内部座椅)
{
int i,j=0;
printf(“输入numberremptyseats\n”);
printf(“%d\n”,ar[0].seatID);//添加了换行符


对于(i=0;iOr在
printf()中包括空白或换行)
让它更清楚。哇,谢谢你,不幸的是,我的主代码中仍然存在问题。我移植了这个,我想它不知怎么阻止了它。这很糟糕,但感谢你的回答!我终于找到了问题的原因。
char selection[1]=“z”
scanf(“%s”,selection);
我把1改成了2,没有其他问题了。你能帮我理解为什么吗?长度为1的
char[]
数组将没有空间在字符串末尾终止
\0
scanf()
不知道这一点,并且写入(至少)2个字符,可能会覆盖附近的变量。有道理,我非常感谢所有的帮助!或者在
printf()中包含一个空格或换行符
让它更清楚。哇,谢谢你,不幸的是,我的主代码中仍然存在问题。我移植了这个,我想它不知怎么阻止了它。这很糟糕,但感谢你的回答!我终于找到了问题的原因。
char selection[1]=“z”
scanf(“%s”,selection);
我把1改成了2,没有其他问题了。你能帮我理解为什么吗?长度为1的
char[]
数组将没有空间在字符串末尾终止
\0
scanf()
不知道这一点,并且写入(至少)2个字符,可能会覆盖附近的变量。有道理,我非常感谢所有的帮助!或者在
printf()中包含一个空格或换行符
让它更清楚。哇,谢谢你,不幸的是,我的主代码中仍然存在问题。我移植了这个,我想它不知怎么阻止了它。这很糟糕,但感谢你的回答!我终于找到了问题的原因。
char selection[1]=“z”
scanf(“%s”,selection);
我把1改成了2,没有其他问题了。你能帮我理解为什么吗?长度为1的
char[]
数组将没有空间在字符串末尾终止
\0
scanf()
不知道这一点,并且写入(至少)2个字符,可能会覆盖附近的变量。有道理,我非常感谢所有的帮助!或者在
printf()中包含一个空格或换行符
让它更清楚。哇,谢谢你,不幸的是,我的主代码中仍然存在问题。我移植了这个,我想它不知怎么阻止了它。这很糟糕,但感谢你的回答!我终于找到了问题的原因。
char selection[1]=“z”
scanf(“%s”,selection);
我把1改成了2,没有其他问题了。你能帮我理解为什么吗?长度为1的
char[]
数组将没有空间在字符串末尾终止
\0
scanf()
不知道这一点,并且写入(至少)2个字符,可能会覆盖附近的变量。有道理,我真的很感谢所有的帮助!
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);
}
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);
}