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

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

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

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

Q&A

解決済

2回答

1928閲覧

c言語 ファイル書き込み方法(for)

Masaki21

総合スコア14

C

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

0グッド

0クリップ

投稿2018/03/07 05:20

前提・実現したいこと

ファイル書き込みをしたい。
このソースコードでのファイル書き込みだと、最初の一つ目しか書き込められません。どうすれば、4つとも書き込められますか?
ここに質問の内容を詳しく書いてください。
(例)PHP(CakePHP)で●●なシステムを作っています。
■■な機能を実装中に以下のエラーメッセージが発生しました。

発生している問題・エラーメッセージ

エラーメッセージ

該当のソースコード

#include <stdio.h>
FILE *fp;

int calculateBMI(void);

int main(void)
{
int i;
fp = fopen("csis.txt","w");
for (i = 1; i <= 4; ++i)
calculateBMI();
return 0;
}

int calculateBMI(void)
{

double weight, height, BMI; printf("Enter your weight: "); fprintf(fp,"Enter your weight: "); scanf("%lf",&weight); fscanf(fp,"%lf",&weight); printf("Enter your height: "); fprintf(fp,"Enter your height: "); scanf("%lf",&height); fscanf(fp,"%lf",&height); BMI = (weight * 703) / (height * height); if(BMI < 18.5) { printf("Your BMI is %.2lf: Underweight\n",BMI); fprintf(fp,"Your BMI is %lf: Underweight\n",BMI); } else if(BMI < 25) { printf("Your BMI is %.2lf: Normal\n",BMI); fprintf(fp,"Your BMI is %.2lf: Normal\n",BMI); }else if(BMI < 30) { printf("Your BMI is %.2lf: Overweight\n",BMI); fprintf(fp,"Your BMI is %lf: Overweight\n",BMI); } else { printf("Your BMI is %.2lf: Obese\n",BMI); fprintf(fp,"Your BMI is %lf: Obese\n",BMI); } fclose(fp); return 0;

}

c言語

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答2

0

他に気になる点が。
コードを見る限り標準出力(端末)に表示されたものを(ほぼ)そのままファイルとして出力したいのだと思います。
とするとfscanf(fp,"%lf",&weight);で、いままさに出力中のファイルから値を取得するのはおかしいです。
fprintf(fp,"%lf", weight);と修正すると意図に沿った結果になります。

投稿2018/03/07 06:17

can110

総合スコア38234

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

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

Masaki21

2018/04/05 06:31

返信遅れて大変申し訳ありません。 修正いたしました。ありがとうございます。
guest

0

ベストアンサー

関数calculateBMI内でfcloseしてしまっているからかと。
ファイルストリームを閉じるのはmain関数でループを抜けた後が良いでしょう。

投稿2018/03/07 05:26

LouiS0616

総合スコア35658

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

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

Masaki21

2018/03/07 05:34

有難うございました。 解決いたしまいた。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問