在函数之间传递结构

时间:2017-01-26 15:09:22

标签: c struct

我试图学习如何在函数之间传递结构,我编写了一个程序,其中有一个结构数组和结构本身有一个整数数组。它正在编译正确但是当我运行它时,程序不期望超过4个值。我不知道错误是什么?

#include<stdio.h>
#include<stdlib.h> 

typedef struct
{
    char bname[10];
    int ssn[3];
} book;

void accept(book k[], int n);
void print(book k[], int n);
int main()
{
    book a[2];
    accept(a, 2);
    print(a, 2);
    return 0;
}

void accept(book k[], int n)
{
    int i, j;

    for (i = 0; i < n; i++)
    {
        for (j = 0; j < 3; i++)
        {
            scanf("%d\n", &k[i].ssn[j]);
        }
        scanf("%s\n", k->bname);
    }
}

void print(book k[], int n)
{
    int i, j;
    for (i = 0; i < n; i++)

    {
        for (j = 0; j < 3; j++)
        {
            printf("%d\n", k[i].ssn[j]);
        }

        printf("%s\n", k->bname);
    }
}

1 个答案:

答案 0 :(得分:2)

您的accept功能:

for (j = 0; j < 3; i++)     // infinite loop

应该 j ++。

接下来,在acceptprint中将k->bname更改为k[i].bname,以便不会始终重写第一个对象。

正如@SouravGhosh在评论中已经指出的那样,为什么要使用scanf("%d\n"... - 它可能只是scanf("%d"...