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);
}
No.8ベストアンサー
- 回答日時:
No4です。
>tatumaruさんについて
>/の部分を追加しましたが、変化はありませんでした。すいません。
こちらでは、正常に動作してますよ。
添付図を参照してください。
seiseki.datに77が表示されています。
実行すると、
seiseki.txtに
Enter seiseki:score= 77: Pass
と書き込まれています。
No4でこちらが提示したソースをまるまるコピペしてビルドした後、実行してください。同様の結果になると思います。
(画面にはEnter seiseki:score= 77: Passは表示されません)
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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ifstream/ofstream について
-
ファイル名を複数個配列で確保...
-
Perlで特定行から特定行までを...
-
VBAで巨大なファイルの途中から...
-
chdirがうまくできない
-
VBAでCSVファイルの特定行を書...
-
fopenでディレクトリ内の全ファ...
-
ReadLineでの読み出し行を指定する
-
C言語で特定の行を抽出する方法...
-
MySQLにバイナリデータを正常に...
-
XML::Parserの parsefileの結果...
-
パスから最後のディレクトリだ...
-
Perl 特定のフォルダ以外削除
-
大容量テキストファイルから任...
-
Perl で syntax error
-
ExcelをCSV書き出す場合のシー...
-
空白文字 \\f と\\v の違いに...
-
perlのエディタでおすすめを教...
-
excel→txtファイル作成時、セル...
-
JSP URLに表示される拡張子 .jsp
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「パスが見つかりません」とい...
-
ファイル名を複数個配列で確保...
-
perlで先頭の数値をみて昇順に...
-
Perl エラーログを指定の場所...
-
Pythonでegrep機能をつかいたい
-
Visual Basicを使って三平方の...
-
perlでCSVをソートする方法につ...
-
ifstream を利用した1行分のテ...
-
Pythonで非日本語のUnicode文字...
-
perlプログラム 外部複数ファ...
-
Perlによるディレクトリ内の連...
-
system関数と引数について
-
C++でのテキストファイル読み込...
-
Perlのワンライナーをスクリプ...
-
バッチファイルでテキストファ...
-
Perl 重複カウント 上位3名
-
perlで指定範囲を複数ファイル...
-
perl 計算結果をファイルへ出力...
-
一行だけ読込
-
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だが打ち間違えてしまいました。)
と表示されることを期待しています。