2017-08-07 36 views
-3

構造体を配列で使用する方法を解明しようとしており、コードのように配列の最初の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は1文字しか保持できません。あなたは文字列を保持したい。どうしたらいい? – struthersneil

+0

そうだけど、文字列として宣言するたびに、エラーがscanfに現れ、それがchar **であり、文字列が必要であると言っています。何らかの理由で示されているようにそれを残して、それを止める唯一の方法でした – string

答えて

0

すべての文字列をそのサイズで配置する必要があります。

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

する必要がありますそして、あなたは変数でchar配列(文字列)を入れて(string.hのから)strcpyを使用する必要があります。

details[0].name = "John"; should be strcpy(details[0].name,"John"); 
関連する問題