構造体の配列、関数への構造体の引渡し
Posted: 2010年9月06日(月) 23:39
基本: 構造体の配列、関数への構造体の引渡し
基本課題 13..2
name(名前: char型配列), height(身長: float型変数), bloodType(血液型: char型変数)をメンバに持つ構造体を宣言し, 128名分が記憶可能になるようその構造体の配列を定義せよ. また,その配列に対して値を入力し,さらに表示できるようにせよ. 構造体のメンバ値を表示するには、 ひとつの構造体の各メンバの値を表示する関数を作成すること。
% ./bodyData
1人目のデータ: 立命太郎 175.5 A
2人目のデータ: 野路花子 169.0 B
3人目のデータ: 衣笠一郎 180.4 O
4人目のデータ: 0 0 0 ← 0 0 0 と入力すると終わる.
名前 身長 血液型
立命太郎 175.5 A
野路花子 169.0 B
衣笠一郎 180.4 O
%
ヒント: 各人の名前、身長、血液型のデータを1行で入力するためには、参 考12.1に示されたfgets()関数で、これらを1度に取り込 み、最初の空白までを名前とみなし、次の空白までを身長とみなし、次に改行ま でを血液型をみなせばよい。これらを別々の文字列として、必要に応じて整数や 浮動小数点数に変換し、構造体のメンバに設定すること。
ヒント: ひとつの構造体の各メンバの値を表示する関数に構造体を引渡す ことを繰り返えせばよい。
という問題でセグメントエラーが出てどうすればよいのかわかりません。デバッガはなぜかいかれているので質問させていただきます。
私が作ったソースコード↓
#include<stdio.h>
#define SIZE 256
int main(void){
int i;
struct roll{
char name[32];
float height;
char blood[3];
};
struct roll a[30];
for(i=0;;i++){
printf("%d番めのひと",i);
scanf("%s %f %s",a.name,a.height,a.blood);
if(a.name == "0" && a.height== 0 && a.blood=="0" ){
break;
}
}
int j;
for(j=0 ; j<=i ; j++){
printf("名前 身長 血液型 \n");
printf("%s %2s %s \n",a[j].name,a[j].height,a[j].blood);
}
return 0;
}
基本課題 13..2
name(名前: char型配列), height(身長: float型変数), bloodType(血液型: char型変数)をメンバに持つ構造体を宣言し, 128名分が記憶可能になるようその構造体の配列を定義せよ. また,その配列に対して値を入力し,さらに表示できるようにせよ. 構造体のメンバ値を表示するには、 ひとつの構造体の各メンバの値を表示する関数を作成すること。
% ./bodyData
1人目のデータ: 立命太郎 175.5 A
2人目のデータ: 野路花子 169.0 B
3人目のデータ: 衣笠一郎 180.4 O
4人目のデータ: 0 0 0 ← 0 0 0 と入力すると終わる.
名前 身長 血液型
立命太郎 175.5 A
野路花子 169.0 B
衣笠一郎 180.4 O
%
ヒント: 各人の名前、身長、血液型のデータを1行で入力するためには、参 考12.1に示されたfgets()関数で、これらを1度に取り込 み、最初の空白までを名前とみなし、次の空白までを身長とみなし、次に改行ま でを血液型をみなせばよい。これらを別々の文字列として、必要に応じて整数や 浮動小数点数に変換し、構造体のメンバに設定すること。
ヒント: ひとつの構造体の各メンバの値を表示する関数に構造体を引渡す ことを繰り返えせばよい。
という問題でセグメントエラーが出てどうすればよいのかわかりません。デバッガはなぜかいかれているので質問させていただきます。
私が作ったソースコード↓
#include<stdio.h>
#define SIZE 256
int main(void){
int i;
struct roll{
char name[32];
float height;
char blood[3];
};
struct roll a[30];
for(i=0;;i++){
printf("%d番めのひと",i);
scanf("%s %f %s",a.name,a.height,a.blood);
if(a.name == "0" && a.height== 0 && a.blood=="0" ){
break;
}
}
int j;
for(j=0 ; j<=i ; j++){
printf("名前 身長 血液型 \n");
printf("%s %2s %s \n",a[j].name,a[j].height,a[j].blood);
}
return 0;
}