2017-08-07 97 views
-3

我一直在努力解決如何在數組中使用結構並且不知道如何在代碼中看到初始化數組的前三項。當我嘗試打印或掃描數組的值時,我也會遇到錯誤,因爲它說它們都是整數,即使我已將它們聲明爲字符串/字符。任何幫助將是偉大的,謝謝。構造和初始化數組

#include <stdlib.h> 
#include <stdio.h> 
#define MAXLEN 100 

typedef struct{ 
    char name;   <<have now changed all to [MAXLEN+1] 
    char surname;  << 
    char UUN;   << 
    char department; << 
    char gender; 
    int age; 
} student_t; 


int main(void){ 
    student_t details[5]; 
    int i, n; 

    details[0].name = "John";   <<should all the '=' be ',' instead? 
    details[0].surname = "Bishop";  <<do not understand how to initialize 
    details[0].UUN = "s1234"; 
    details[0].department = "Inf"; 
    details[0].gender = 'm'; 
    details[0].age = 18; 

    details[1].name = "Lady"; 
    details[1].surname = "Cook"; 
    details[1].UUN = "s2345"; 
    details[1].department = "Eng"; 
    details[1].gender = 'f'; 
    details[1].age = 21; 

    details[2].name = "James"; 
    details[2].surname = "Jackson"; 
    details[2].UUN = "s3456"; 
    details[2].department = "Eng"; 
    details[2].gender = 'm'; 
    details[2].age = 17; 

    for(i = 3; i < 6; i++){ 
    printf("Enter first name second name UUN department gender age: \n"); 
    scanf(" %s %s %s %s %c %d", details[i].name, details[i].surname, details[i].UUN, details[i].department, details[i].gender, details[i].age); 
    } 

    for(n = 0; n < 6;n++){ 
    printf("details: %s", details[n].name); 
    } 

    return EXIT_SUCCESS; 
} 
+1

你的結構成員只是個別的'char'對象。你如何期望你的每個字符串適合一個'char'? – AnT

+1

這裏有一個提示:char只能包含一個字符。你想持有字符串。你會怎麼做? – struthersneil

+0

是的,但每次我把它聲明爲一個字符串錯誤出現在scanf中說它是char **並且期望一個字符串。如圖所示,因爲某種原因,這是阻止它的唯一方法 – string

回答

0

你必須把每個字符串的大小。

char name;應該char name[30]; //for example

而且你應該使用strcpy(從string.h中)在變量把一個字符數組(串)。

details[0].name = "John"; should be strcpy(details[0].name,"John");