2017-08-07 67 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");