dポイントプレゼントキャンペーン実施中!

C言語初心者です。プログラミングで成績(50点以上は合格)というプログラミングを作りたいのですが、上手くいかないです。何か不備な点がありましたら教えてください。
#include <stdio.h>void main(void)
{
int score;
FILE* fpo,*fpi;
fpi = fopen("seiseki.dat", "r");
fpo = fopen("seiseki.txt", "w");

while (1) {
fprintf(fpo, "Enter seiseki:");
fscanf(fpi, "%4d", &seiseki);
fclose(fpi);

if (seiseki <0 || seiseki >100) {
fprintf(fpo, "input data error\n");
break;
}
else {
if (seiseki>= 70)
fprintf(fpo, "score= %4d: Pass\n",score);
else
fprintf(fpo, "score= %4d: Fall\n",score) ;
}
} fclose(fpo);
}

「C言語初心者です。プログラミングで成績(」の質問画像

質問者からの補足コメント

  • 70と50を間違えました。また、seiseki.txtというテキストファイルを作り、数字を入力しました。色々調べたのですが、原因が分からなかったため、何か分かれば教えてください。

      補足日時:2020/11/06 18:41
  • 70と50を間違えました。また、seiseki.txtというテキストファイルを作り、数字を入力しました。色々調べたのですが原因が分からなかったため、何か分かれば教えてください。

      補足日時:2020/11/06 18:43
  • 77


    と入力しています。

      補足日時:2020/11/06 18:55
  • fprintf(fpo, "Enter score:");
    fscanf(fpi, "%4d", &seiseki);

      補足日時:2020/11/06 19:10
  • fprintf(fpo, "Enter seiseki:");
    fscanf(fpi, "%4d", &seiseki);

      補足日時:2020/11/06 19:10
  • fprintf(fpo, "Enter score:");
    fscanf(fpi, "%4d", &score);

    if (score <0 || score >100)

    if (score>= 70)

    seisekiじゃなくてscoreです。
    間違いが多くてすいません。

      補足日時:2020/11/06 19:12
  • while (1) {
    fprintf(fpo, "Enter score:");
    ですね…
    ほんとに間違いが多くてすいません。

    あと最終的には入力したデータ(結果)をテキストファイルに出力したいです。
    (自分が脳内で考えているイメージはテキストファイル内で
    Enter score: 54
    score=54:合格

    Enter score:12
    score=12:不合格
    ・・・
    みたいな感じをイメージしています。)
    プログラミング自体初めてなので、説明不足な節はあると思いますが、よろしくお願いします。

      補足日時:2020/11/06 20:20
  • tatumaruさんについて
    /の部分を追加しましたが、変化はありませんでした。すいません。

    tacoさんについて、
    「それは, 例えばseiseki.dat が
    54
    12
    となっていた場合, seiseki.txt は
    Enter score: 54
    score=54:合格
    Enter score:12
    score=12:不合格
    みたいになってほしい, ということ?」
    そういう事です。言葉足らずですいません。
    また
    「現状で何がどうなっていることに対しての質問」は(文章読み取るのが苦手なのであってるかどうかは分かりませんが、)僕が考えたプログラムで、デバックなしで開始した結果、何も表示されないままになってしまったので、どの辺が間違えているのかが分からないため質問しました。

      補足日時:2020/11/07 00:15
  • TACOさんについて、
    > それとも, あなたは「何かを表示するつもりでプログラムを書いた」のですか? もしそうなら, どこでどのように表示するように書いているのですか?

    デバックなしで開始したあと、seiseki.datに77を入力した後、テキストファイルseiseki.txtに
    Enter seiseki =77:Pass
    (←本来はseisekiではなく、scoreだが打ち間違えてしまいました。)
    と表示されることを期待しています。

      補足日時:2020/11/07 14:12

A 回答 (9件)

No4です。


>tatumaruさんについて
>/の部分を追加しましたが、変化はありませんでした。すいません。

こちらでは、正常に動作してますよ。
添付図を参照してください。
seiseki.datに77が表示されています。
実行すると、
seiseki.txtに
Enter seiseki:score= 77: Pass
と書き込まれています。

No4でこちらが提示したソースをまるまるコピペしてビルドした後、実行してください。同様の結果になると思います。
(画面にはEnter seiseki:score= 77: Passは表示されません)
「C言語初心者です。プログラミングで成績(」の回答画像8
    • good
    • 0
この回答へのお礼

できるようになりました!ありがとうございます!

お礼日時:2020/11/08 01:11

「デバックなしで開始したあと、seiseki.datに77を入力した」だと, ほとんどの人には間に合わないんじゃないかなぁ. 1 ms かそれ以下の間隔しか許してくれないはずだし. いや, あなたがそれに自信を持っていて実際に実行できるならいいけど....



それはさておき, そのような動作を期待したとして「実際にどうなっている」ことを問題視している?
    • good
    • 0

これって, seiseki.dat にあるデータを処理して seiseki.txt に掃き出すってプログラムだよね. であればあなたが確認すべきはその出力ファイルの中身であって, 「何も表示されないままになってしまう」こと自体を問題とする必然性はないのでは.



それとも, あなたは「何かを表示するつもりでプログラムを書いた」のですか? もしそうなら, どこでどのように表示するように書いているのですか?
    • good
    • 0

それは, 例えば


seiseki.dat が
54
12
となっていた場合, seiseki.txt は
Enter score: 54
score=54:合格

Enter score:12
score=12:不合格
みたいになってほしい, ということ?

そうでないなら, もっと具体的に入出力のファイルの内容をきちんと書いてほしい. また, そうであるかどうかにかかわらず*現状で*なにがどうなっていることに対して質問をしている?
    • good
    • 0

そもそも, なにがどうなることを期待しているんだ? それがないと話が始まらないよ.



明らかに不自然なところが 1か所あるんだけど, 意図的なのかなぁ....
    • good
    • 0

以下のようにしてください。


変えたのは //追加のコメントのある行です。
77と入力するのはseiseki.txtでなくseiseki.datです。念のため。
----------------------------------------
#include <stdio.h>
void main(void)
{
int score;
FILE* fpo,*fpi;
fpi = fopen("seiseki.dat", "r");
fpo = fopen("seiseki.txt", "w");

while (1) {
fprintf(fpo, "Enter seiseki:");
fscanf(fpi, "%4d", &score);
fclose(fpi);

if (score <0 || score >100) {
fprintf(fpo, "input data error\n");
break;
}
else {
if (score>= 70)
fprintf(fpo, "score= %4d: Pass\n",score);
else
fprintf(fpo, "score= %4d: Fall\n",score) ;
}
break; //追加
}
fclose(fpo);
}
    • good
    • 0

こちらでコンパイルするとエラーになります。


コンパイル(ビルド)がOKになったものを提示してください。
(seisekiとscoreがちゃんぽんになっています)
    • good
    • 1

seiseki.datを読み込んでseiseki.txtへ出力ですね。


seiseki.datの内容を提示してください。
又、seiseki.txtにはどのように出力されることを期待しているのか、
その内容を提示してください。
    • good
    • 0

seiseki.txtの内容はどうなっていますか?

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!