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

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

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

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

1回答

3060閲覧

C言語 ファイルを読み込んで最大値をを持つ名前を出力したい

keeen

総合スコア15

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2020/08/08 03:18

イメージ説明
という問題を解いているのですが、最後の個人の名前を出力という部分だけが分かりません。調べても、配列を使った最大値の求め方しか出てこなくて困っています。

C

1#include <stdio.h> 2int main(void){ 3 FILE *fp; 4 char name[20], max_name[20]; 5 double height, weight, bmi, max = 0; 6 7 fp = fopen("score.txt","r"); 8 9 if(fp == NULL) 10 printf("ファイルをオープンできませんでした\n"); 11 else{ 12 while(fscanf(fp, "%s%lf%lf",name,&height,&weight) == 3){ 13 bmi = weight / ((height * 1/100) * (height * 1/100)); 14 if(bmi > max) 15 max = bmi; 16 max_name = name; 17 } 18 printf("BMIが最も高いのは%sさんです\n",max_name); 19 } 20fclose(fp); 21return 0; 22}

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

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

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

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

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

guest

回答1

0

ベストアンサー

max_name = name;
ではなく
strcpy(max_name, name);
せよ。

※ #include <string.h> をお忘れなく

投稿2020/08/08 03:38

episteme

総合スコア16612

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

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

dodox86

2020/08/08 03:43

もうひとつ、if(bmi > max)の{}カッコが無いために、max_name = name; 相当の処理が常に実行されてしまいます。
keeen

2020/08/08 03:56

できました!ありがとうございます!
kazuma-s

2020/08/08 04:21

さらにもうひとつ。fclose(fp); は else の中に入れましょう。fclose(NULL); はダメです。
episteme

2020/08/08 06:23

おまけ。できました!はいいとして、なぜ max_name = name ではダメか / なぜ strcpy(max_name, name) なのか考えよ。
keeen

2020/08/08 06:35

char文字列を比較するとポインタの比較になるからでしょうか?
episteme

2020/08/08 06:46

え? どこでchar文字列を比較してます?
keeen

2020/08/08 06:55

char配列は宣言時以外の=による代入ができないからstrcpyを使う必要がある、ということですか?
episteme

2020/08/08 07:37

charであろうがなかろうが、配列のナカミを = で丸ごとコピーできない。 なので(このケースでは)文字列専用コピー関数:strccpyでコピーします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問