2017-01-26 6 views
-1

関数間で構造がどのように渡されているかを知ろうとしていましたが、構造体の配列があり、構造自体に整数の配列があるプログラムを書きました。プログラムは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); 
    } 
} 
+5

コードのインデントを開始します。 –

+1

'scanf("%d \ n "' ...あなたは '\ n'をそこに持つつもりですか? –

答えて

2

あなたaccept機能:

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

J ++であるべき。

k[i].bnameからacceptprint変化k->bname両方の次のを、常に最初のオブジェクトを書き換えないように。

@SouravGhoshのコメントで既に指摘したように、なぜscanf("%d\n"...を使用しますか?それはちょうどscanf("%d"...になります。

関連する問題