C言語関係掲示板

過去ログ

No.14. 構造体の関数について


こんにちは
構造体のことなんですが、構造体を関数にして
returnで受け取るようにしたいのですが
実行するとえらいことになってしまいました。
生徒の数を一人にすると出来るのですが、配列を使うと
コンピューターが止まります。
どうしたらよいのか誰か教えて頂けないでしょうか?
#include<stdio.h>
#include<stdlib.h>

struct SEITO{

int no;
char name[81];
int point;
};

#define SEITO_MAX 2

struct SEITO GetData(void);

void main()
{
struct SEITO seito[2];

int i;

seito[2]=GetData();


for(i=0;i<2;i++){

printf("出席番号%d 名前:%s 点数:%d\n"
,seito[i].no,seito[i].name,seito[i].point);
}
}



struct SEITO GetData(void)
{

struct SEITO sei[2];

int i;

char ss[81];

for(i=0;i<2;i++){
printf("%d人目の生徒番号を入力してください"
,i+1);
sei[i].no=atoi(gets(ss));

printf("%d人目の生徒の名前を入力してくださ               "い,i+1);

gets(sei[i].name);

printf("%d人目の生徒の点数を入力してください
",i+1);
sei[i].point=atoi(gets(ss));


return(sei[i]); /*まずこの辺が間違って
}               いると思います*/
}

誰か教えてください!!


こんな感じになりました。

#include<stdio.h>
#include<stdlib.h>

struct SEITO {
int no; // 生徒番号
char name[128]; // 名前
int point; // 得点
};

const int SEITO_MAX = 2; // 生徒数の上限
struct SEITO GetData(void); // 生徒データ入力

int main(void)
{
struct SEITO seito[SEITO_MAX]; // 生徒データの配列(構造体)
int i;

// 生徒データの入力
for(i=0; i<SEITO_MAX; i++) { seito[i] = GetData(); }
// 結果表示
for(i=0; i<SEITO_MAX; i++) {
printf( "出席番号 %d 名前 %s 点数 %d\n",
seito[i].no, seito[i].name, seito[i].point);
}
return 0;
}

// 生徒データ入力
struct SEITO GetData()
{
struct SEITO sei;
static int i;

printf("%d人目の生徒番号を入力 > ", i+1);
scanf("%d", &sei.no);
printf("%d人目の生徒の名前を入力 > ", i+1);
scanf("%s", sei.name);
printf("%d人目の生徒の点数を入力 > ", i+1);
scanf("%d", &sei.point);

++i;
return sei;
}

ta-tinさんのプログラムですが、全角スペースが入っていたりしてましたよ。


shuさんどうも有難うございます。
まだCを初めて2ヶ月な者ですから
まだまだ、分からないことが沢山ありますが
頑張っていこうと思っています。
今度から全角スペースが入れないように気をつけます。

戻る


「初心者のためのポイント学習C言語」 Last modified:2001.7.25
Copyright(c) 2000-2002 TOMOJI All Rights Reserved