ページ 11

C++ 構造体について

Posted: 2011年3月16日(水) 23:16
by ののき
構造体を学ぶためのプログラムを作ってみたのですが,naru.name2の"前原"が実行画面では、数字になって出力されてしまいます。
”前原”を正しく出力するにはどのように修正すればよいのでしょうか。
ご指導よろしくお願いいたします。

コード:

#include <stdio.h>

struct {
        char *name;
        char *name2; 
}naru;

int main() {
        naru.name = "成瀬川なる";
        naru.name2 = "前原";
       

        printf("名前\t\t年齢\n");
        printf("%s\t%d\n" , naru.name &naru.name2);

        return 0;
}

Re: C++ 構造体について

Posted: 2011年3月16日(水) 23:23
by h2so5
単純に
printf("%s\t%s\n" , naru.name,naru.name2);
とすれば文字として出力されますが、このプログラムは構造体の使い方が間違っています。

名前と年齢を表示するプログラムなら、構造体のメンバは↓のように名前と年齢になるはずです。
struct {
char *name;
int old;
}naru;

複数の名前を扱いたいのであれば、構造体の配列を使ってください。

Re: C++ 構造体について

Posted: 2011年3月16日(水) 23:42
by box
名前と「年齢」を出力したいんじゃないんですか?
年齢って数値ですよね。「前原」って、数値ですか?
このプログラムで何がしたいのか、よくわからないです。

# oldよりもageの方が、年齢を表わす変数名としてはふさわしいんじゃないかなぁ、なんて思ったり思わなかったり。

Re: C++ 構造体について

Posted: 2011年3月17日(木) 00:02
by ののき
このプログラムは名前と年齢を出力する構造体のプログラムを改変したものです。
ご指摘の通り、名前を両方出力することはできるか、ということに着目して書いたので、何をしたいか、という点では明確なプログラムとは言えません。

 h2so5 様の書かれたcodeに従い、修正したところ無事出力できました。
ご指導ありがとうございます。

Re: C++ 構造体について

Posted: 2011年3月17日(木) 00:09
by box
改変するなら徹底的に。
char * 型を出力するための書式が %d ではおかしい、ということにすぐ気づくべき。

Re: C++ 構造体について

Posted: 2011年3月17日(木) 00:23
by h2so5
box さんが書きました:# oldよりもageの方が、年齢を表わす変数名としてはふさわしいんじゃないかなぁ、なんて思ったり思わなかったり。
ageをど忘れしていました。すみません。
(-_-;) 名詞のoldに年齢という意味はないようなので、ageの方が正しいです。