C++ 構造体について

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

C++ 構造体について

#1

投稿記事 by ののき » 14年前

構造体を学ぶためのプログラムを作ってみたのですが,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;
}

アバター
h2so5
副管理人
記事: 2212
登録日時: 14年前
住所: 東京
連絡を取る:

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

#2

投稿記事 by h2so5 » 14年前

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

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

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

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

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

#3

投稿記事 by box » 14年前

名前と「年齢」を出力したいんじゃないんですか?
年齢って数値ですよね。「前原」って、数値ですか?
このプログラムで何がしたいのか、よくわからないです。

# oldよりもageの方が、年齢を表わす変数名としてはふさわしいんじゃないかなぁ、なんて思ったり思わなかったり。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

ののき

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

#4

投稿記事 by ののき » 14年前

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

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

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

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

#5

投稿記事 by box » 14年前

改変するなら徹底的に。
char * 型を出力するための書式が %d ではおかしい、ということにすぐ気づくべき。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

アバター
h2so5
副管理人
記事: 2212
登録日時: 14年前
住所: 東京
連絡を取る:

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

#6

投稿記事 by h2so5 » 14年前

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

閉鎖

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