みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

構造体の一部の値を取得する方法

下記のサイトで
http://www.isl.ne.jp/pcsp/beginC/C_Language_14.html
例えば、例題4で 武田信玄の"武"だけを取得するやり方はありますか?
イメージとしては2行目の2個目とか3個目の文字を取得するという意味です。
ポインタを使えばできそうな気がしますがどのように行ってよいかわっからないです。
宜しくお願いしんす。

投稿日時 - 2018-05-10 23:06:52

QNo.9497183

困ってます

質問者が選んだベストアンサー

構造体へのアクセスはサイトに書いてますよー
ポインターもサイトの13章に書かれてますよー
参照だけならポインターでいいけど書き換えるなら配列使う

char *name_1 = "武田 信玄";
char name_2[10];

name_2[0] = name_1[2];
name_2[1] = name_1[3];
name_2[2] = '\0';

printf("%c%c %s\n",name_1[0],name_1[1],name_2);

Win DOS窓 SJIS なら%c%cで表示されます

投稿日時 - 2018-05-11 15:09:44

お礼

ありがとうございます。

投稿日時 - 2018-05-14 22:18:45

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

>old[2][x]みたいなかんじです。

例題4の構造体OLDはnameがchar *ですので、それはできません。
「(3)構造体の初期化」にある構造体studentのようにnameがcharの配列でしたらできはしますが悪手です。
あなたの質問の仕方が悪かったわけではなく悪手ですので、それを回答として真っ先にあげるような回答者はいないはずです。

投稿日時 - 2018-05-12 01:29:50

ANo.1

文字コードがShiftJISやEUC-JPなどの"武"が2バイトで表現される文字コードでしたら、
char c1 = old[1].name[0];
char c2 = old[1].name[1];
で、参照はできます。

投稿日時 - 2018-05-10 23:58:26

補足

私の説明が悪かったです。
.name[0]とかではなく、行の先頭からx番目の値を取得したいのです。
old[2][x]みたいなかんじです。
宜しくお願いします。

投稿日時 - 2018-05-11 23:20:30

お礼

ありがとうございます。

投稿日時 - 2018-05-14 22:18:21

あなたにオススメの質問