C言語の構造体についての質問です。

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
boby

C言語の構造体についての質問です。

#1

投稿記事 by boby » 13年前

初めまして。
C言語を勉強中の初心者です。

練習問題では、関数からポインタを使って、構造体の各要素へ数値や文字列を渡す、というようなことをしていました。
ですが、イマイチ理解が浅い気がして、typedefと関数を使わずに同じことができるのか試してみました。
しかしなかなかうまくいかず、1人でもやもやしているところです。
下記は私の苦心の成れの果てです。

↓三人分の名前、年齢、性別を入力し、最後に三人分のデータを出力するプログラム(不完全)

コード:

#include <stdio.h>
#include <string.h>

struct person {
	char name[90];
	int age;
	int sex;
};

int main(void)
{
	struct person data[3];
	int i;
	char seibetu[9];

	for(i=0;i<3;i++) {
		printf("名前を入力して下さい:");
		scanf("%s",data[i].name);
		printf("年齢を入力して下さい:");
		scanf("%d",&data[i].age);
		printf("性別を入力して下さい(1-男性,2-女性):");
		scanf("%d",&data[i].sex);
		printf("\n");
	}

	for(i=0;i<3;i++) {
		printf("名前: %S\n",data[i].name);
		printf("年齢: %d\n",data[i].age);

		if(data[i].sex==1) {
			strcpy(seibetu,"男性");
		} else {
			strcpy(seibetu,"女性");
		}
		printf("性別: %s\n",seibetu);
		printf("\n");
	}
	return 0;
}
アドバイス頂けたら嬉しいです。
よろしくお願いします。

box
記事: 2002
登録日時: 15年前

Re: C言語の構造体についての質問です。

#2

投稿記事 by box » 13年前

boby さんが書きました: しかしなかなかうまくいかず
どんな風にうまくいかないかを具体的に書きましょう。
boby さんが書きました:

コード:

		printf("名前: %S\n",data[i].name);
Sは大文字でいいのでしょうか?
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

box
記事: 2002
登録日時: 15年前

Re: C言語の構造体についての質問です。

#3

投稿記事 by box » 13年前

私なら例えばこう書く。

コード:

#include <stdio.h>

struct person {
    char name[90];
    int age;
    int sex;
};

int main(void)
{
    struct person data[3];
    int i;

    for (i = 0; i < 3; i++) {
        printf("名前を入力して下さい:");
        scanf("%s", data[i].name);
        printf("年齢を入力して下さい:");
        scanf("%d", &data[i].age);
        do {
            printf("性別を入力して下さい(1-男性,2-女性):");
            scanf("%d", &data[i].sex);
        } while (data[i].sex != 1 && data[i].sex != 2);
    }

    for (i = 0; i < 3; i++) {
        printf("名前: %s\n", data[i].name);
        printf("年齢: %d\n", data[i].age);
        printf("性別: %s\n", (data[i].sex == 1) ? "男性" : "女性");
    }
    return 0;
}
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

box
記事: 2002
登録日時: 15年前

Re: C言語の構造体についての質問です。

#4

投稿記事 by box » 13年前

ていうか、そもそも、
boby さんが書きました: 練習問題では、関数からポインタを使って、構造体の各要素へ数値や文字列を渡す、というようなことをしていました。
こちらができるのに
boby さんが書きました: typedefと関数を使わずに同じことができるのか試してみました。
こちらができない、という状況が今ひとつ理解できません。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

閉鎖

“C言語何でも質問掲示板” へ戻る