2017-01-26 3 views
-1

Ich habe versucht zu lernen, wie Strukturen zwischen Funktionen übergeben werden, und ich schrieb ein Programm, wo es ein Array von Struktur und Struktur selbst hat eine Reihe von ganzen Zahlen. Es ist richtig kompilieren, aber wenn ich es ausführen Programm erwartet nicht mehr als 4 Werte. Ich weiß nicht, was der Fehler ist?Übergeben Strukturen zwischen Funktionen

#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

Beginnen Sie mit dem Einrücken Ihres Codes. –

+1

'scanf ("% d \ n "' ... bist du sicher, dass du das '\ n' dort haben willst? –

Antwort

2

Ihre accept Funktion:

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

Sollte j ++ sein.

Als nächstes sowohl accept und print Änderung k->bname-k[i].bname, um nicht immer das erste Objekt neu zu schreiben.

Und wie bereits in den Kommentaren von @SouravGhosh hingewiesen, warum scanf("%d\n"... verwenden - es kann nur scanf("%d"... sein.

Verwandte Themen