![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
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言語初心者です。プログラミングで成績(」の質問画像](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/9/543047642_5fa519ff287e4/M.jpg)
No.8ベストアンサー
- 回答日時:
No4です。
>tatumaruさんについて
>/の部分を追加しましたが、変化はありませんでした。すいません。
こちらでは、正常に動作してますよ。
添付図を参照してください。
seiseki.datに77が表示されています。
実行すると、
seiseki.txtに
Enter seiseki:score= 77: Pass
と書き込まれています。
No4でこちらが提示したソースをまるまるコピペしてビルドした後、実行してください。同様の結果になると思います。
(画面にはEnter seiseki:score= 77: Passは表示されません)
![「C言語初心者です。プログラミングで成績(」の回答画像8](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/8/543026052_5fa5d448d0b41/M.png)
No.9
- 回答日時:
「デバックなしで開始したあと、seiseki.datに77を入力した」だと, ほとんどの人には間に合わないんじゃないかなぁ. 1 ms かそれ以下の間隔しか許してくれないはずだし. いや, あなたがそれに自信を持っていて実際に実行できるならいいけど....
それはさておき, そのような動作を期待したとして「実際にどうなっている」ことを問題視している?
No.7
- 回答日時:
これって, seiseki.dat にあるデータを処理して seiseki.txt に掃き出すってプログラムだよね. であればあなたが確認すべきはその出力ファイルの中身であって, 「何も表示されないままになってしまう」こと自体を問題とする必然性はないのでは.
それとも, あなたは「何かを表示するつもりでプログラムを書いた」のですか? もしそうなら, どこでどのように表示するように書いているのですか?
No.6
- 回答日時:
それは, 例えば
seiseki.dat が
54
12
となっていた場合, seiseki.txt は
Enter score: 54
score=54:合格
Enter score:12
score=12:不合格
みたいになってほしい, ということ?
そうでないなら, もっと具体的に入出力のファイルの内容をきちんと書いてほしい. また, そうであるかどうかにかかわらず*現状で*なにがどうなっていることに対して質問をしている?
No.4
- 回答日時:
以下のようにしてください。
変えたのは //追加のコメントのある行です。
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);
}
No.3
- 回答日時:
こちらでコンパイルするとエラーになります。
コンパイル(ビルド)がOKになったものを提示してください。
(seisekiとscoreがちゃんぽんになっています)
No.2
- 回答日時:
seiseki.datを読み込んでseiseki.txtへ出力ですね。
seiseki.datの内容を提示してください。
又、seiseki.txtにはどのように出力されることを期待しているのか、
その内容を提示してください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- C言語・C++・C# C言語 3 2022/11/09 13:27
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- その他(プログラミング・Web制作) python コードについて(初学者です) 3 2023/07/20 14:44
- C言語・C++・C# プログラミングの問題です。至急教えてください。 /***から***/の部分をプログラミングにしてほし 1 2022/10/13 11:48
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
指定の行数目から行を抽出する
-
ファイル名を複数個配列で確保...
-
Pythonでテキストを行数指定し...
-
入出力共用が出来ないんです
-
日本語のマッチング(正規表現)
-
資格試験に向け、ipodで見れる...
-
CGIで複数のデータファイルを利...
-
絶対+相対アドレスから絶対ア...
-
文字列操作に関する質問です。
-
ファイル読み込みで一部分書き...
-
ファイルの内容をスカラー変数...
-
「パスが見つかりません」とい...
-
VBAでCSVファイルを途中行まで...
-
ExcelをCSV書き出す場合のシー...
-
C言語でファイル名を取得
-
ダイアモンド演算子<>に対するb...
-
VBAでCSVファイルの特定行を書...
-
ListBoxのデータを高速でファイ...
-
does not map to shiftjis は解...
-
ファイル名の変更
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ファイル名を複数個配列で確保...
-
一行だけ読込
-
Pythonでegrep機能をつかいたい
-
ifstream/ofstream について
-
「パスが見つかりません」とい...
-
shellのコマンド deffの差分の...
-
Perl エラーログを指定の場所...
-
MATLABでカーブフィットしたデ...
-
ifstream を利用した1行分のテ...
-
perlでCSVをソートする方法につ...
-
system関数と引数について
-
C++でのテキストファイル読み込...
-
連番のファイルを何個も開きたい
-
[perl] もっとシンプルに改良、...
-
Perl 重複カウント 上位3名
-
Pythonで非日本語のUnicode文字...
-
Pythonでテキストを行数指定し...
-
while文がうまく動かない
-
Fortranで1行飛ばして読み込む方法
-
あるファイルないから日付指定...
おすすめ情報
70と50を間違えました。また、seiseki.txtというテキストファイルを作り、数字を入力しました。色々調べたのですが、原因が分からなかったため、何か分かれば教えてください。
70と50を間違えました。また、seiseki.txtというテキストファイルを作り、数字を入力しました。色々調べたのですが原因が分からなかったため、何か分かれば教えてください。
77
と入力しています。
fprintf(fpo, "Enter score:");
fscanf(fpi, "%4d", &seiseki);
fprintf(fpo, "Enter seiseki:");
fscanf(fpi, "%4d", &seiseki);
fprintf(fpo, "Enter score:");
fscanf(fpi, "%4d", &score);
if (score <0 || score >100)
if (score>= 70)
seisekiじゃなくてscoreです。
間違いが多くてすいません。
while (1) {
fprintf(fpo, "Enter score:");
ですね…
ほんとに間違いが多くてすいません。
あと最終的には入力したデータ(結果)をテキストファイルに出力したいです。
(自分が脳内で考えているイメージはテキストファイル内で
Enter score: 54
score=54:合格
Enter score:12
score=12:不合格
・・・
みたいな感じをイメージしています。)
プログラミング自体初めてなので、説明不足な節はあると思いますが、よろしくお願いします。
tatumaruさんについて
/の部分を追加しましたが、変化はありませんでした。すいません。
tacoさんについて、
「それは, 例えばseiseki.dat が
54
12
となっていた場合, seiseki.txt は
Enter score: 54
score=54:合格
Enter score:12
score=12:不合格
みたいになってほしい, ということ?」
そういう事です。言葉足らずですいません。
また
「現状で何がどうなっていることに対しての質問」は(文章読み取るのが苦手なのであってるかどうかは分かりませんが、)僕が考えたプログラムで、デバックなしで開始した結果、何も表示されないままになってしまったので、どの辺が間違えているのかが分からないため質問しました。
TACOさんについて、
> それとも, あなたは「何かを表示するつもりでプログラムを書いた」のですか? もしそうなら, どこでどのように表示するように書いているのですか?
デバックなしで開始したあと、seiseki.datに77を入力した後、テキストファイルseiseki.txtに
Enter seiseki =77:Pass
(←本来はseisekiではなく、scoreだが打ち間違えてしまいました。)
と表示されることを期待しています。