質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

2回答

2113閲覧

名前入力でデータ表示するC言語プログラム

KeiD

総合スコア26

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2020/07/23 18:14

名前入力でデータ表示するC言語プログラム
名前を入力することで名前に紐づけられてるデータを表示するプログラムを以下に作成しようとしましたが

どの名前を入力しても

10,FW,170

と出力されてしまいます。
どう直せば名前に対応するデータが出力されるかご存じの方ご教示お願い致します。

#include <stdio.h> #include <string.h> struct PLAYER{ int num; char name[20]; char position[3]; double height; }; struct PLAYER p[6]={{10,"Messi","FW",170}, {20,"Neto","GK",180}, {30,"Tenas","GK",185}, {40,"Semedo","MF",175}, {50,"Tenas","DF",187}, {60,"Roberto","DF",182}}; int main(){ int i; printf("選手の名前>"); scanf("%s",&p[i].name); printf("%d %s %.lfcm\n",p[i].num,p[i].position,p[i].height); return 0; }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

c

1#include <stdio.h> 2#include <string.h> 3 4struct PLAYER { 5 int num; 6 char name[20]; 7 char position[3]; 8 double height; 9}; 10 11struct PLAYER p[6] = { {10,"Messi","FW",170}, 12{20,"Neto","GK",180}, 13{30,"Tenas","GK",185}, 14{40,"Semedo","MF",175}, 15{50,"Tenas","DF",187}, 16{60,"Roberto","DF",182} }; 17 18int main() { 19 char buf[20]; 20 21 printf("選手の名前>"); 22 scanf("%s", buf); 23 24 for (int i = 0; i < sizeof(p) / sizeof(struct PLAYER); i++) 25 { 26 if (strcmp(p[i].name, buf) == 0) 27 { 28 printf("%d %s %.lfcm\n", p[i].num, p[i].position, p[i].height); 29 } 30 } 31 32 return 0; 33}

Tenas が 2人いたので break はしませんでした。

投稿2020/07/23 18:32

bboydaisuke

総合スコア5277

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KeiD

2020/07/23 18:54

ありがとうございました。
guest

0

iが初期化されておらず不定値です。
そもそも名前で検索もしていません。
たまたまi0だったのでしょう。

Cの場合は回答がついているのとタグがC++なので、C++のコードを。

C++

1#include <iostream> 2 3struct PLAYER { 4 int num; 5 char name[20]; 6 char position[3]; 7 double height; 8}; 9struct PLAYER p[6] = { {10,"Messi","FW",170}, 10{20,"Neto","GK",180}, 11{30,"Tenas","GK",185}, 12{40,"Semedo","MF",175}, 13{50,"Tenas","DF",187}, 14{60,"Roberto","DF",182} }; 15int main() { 16 std::cout << "選手の名前>"; 17 std::string name; 18 std::cin >> name; 19 for (const PLAYER& player : p) 20 { 21 if (name == player.name) { 22 std::cout << player.num << ' ' << player.position << ' ' << player.height << "cm" << std::endl; 23 } 24 } 25 return 0; 26}

投稿2020/07/23 18:30

編集2020/07/23 18:53
SHOMI

総合スコア4079

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KeiD

2020/07/23 18:54

ありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問