ページ 11

ファイル入力

Posted: 2007年1月23日(火) 22:51
by 大阪
入力ファイル内にあるアラビア数字の個数を数えるプログラムを以下の手順に沿って作成せよ.
① コマンドラインから入力ファイル名,出力ファイル名を引数として指定する準備をプログラム内に記     述する.
② 入力ファイルをread属性,出力ファイルをwrite属性としてオープンする記述を行う.
③ fgetc関数を用いて入力ファイルから1文字,関数sに代入する.
④ 関数sの値をif文を用いて比較し,1~9の数字であればカウンターに1プラスする構文を記述する    (例えばi++を使用).
⑤ ①~④を入力ファイルの最後の文字まで一文字ずつ実行し(EOFまで),ファイル内のすべての1~9までの数字の個数をカウントする.
⑥ 数えた1~9までの文字数を画面および出力ファイルに出力する.

という問題で以下のようにといてみましたが途中の部分がよくわからずスカスカの状態でとまっています どなたかアドバイス もしくは模範解答お願いします
#include <stdio.h>
#include <stdlib.h>

int main(int argc,char *argv[/url]){

FILE *fin, *fout;

char c;

int ;

if(argc!=3){
printf("引数の数が正常ではない\n");
exit(1);
}

if((fin = fopen(argv[1], "r")) == NULL ) {
printf("入力ファイルオープンエラー\n");
exit(1);
}
if((fout = fopen(argv[2], "w")) == NULL ) {
printf("出力ファイルオープンエラー\n");
exit(1);
}

while ( (c=fgetc(fin)) != EOF){
if(c==' ')
}
fclose(fin);
fclose(fout);

return 0;
}

Re:ファイル入力

Posted: 2007年1月23日(火) 23:08
by box
> 入力ファイル内にあるアラビア数字の個数を数えるプログラムを以下の手順に沿って作成せよ.

アラビア数字にはゼロを含みます。
必要なのは0~9の個数ですか?1~9の個数ですか?

> ③ fgetc関数を用いて入力ファイルから1文字,関数sに代入する.

関数sではなく、変数sではありませんか?
ちなみに、fgetcの戻り値はchar型ではなくてint型です。

> ④ 関数sの値をif文を用いて比較し,1~9の数字であればカウンターに1プラスする構文を記述する

もし、0~9であれば、標準関数のisdigitで判定できます。

Re:ファイル入力

Posted: 2007年1月23日(火) 23:32
by 大阪
さっそくの解答ありがとうございます
必要なのは01~9の個数です 関数sではなく、変数sでした、問題を間違えていましたすみません。

Re:ファイル入力

Posted: 2007年1月23日(火) 23:51
by box
> 必要なのは01~9の個数です

「0~9」のことでしたら、先ほどの回答に書きましたとおり、
isdigitが使えます。

Re:ファイル入力

Posted: 2007年1月24日(水) 00:05
by 大阪
#include <stdio.h>
#include <stdlib.h>

int main(int argc,char *argv[/url]){

FILE *fin, *fout;

char c;

int ;

intの後にどんなものをかけばいいのでしょうか

Re:ファイル入力

Posted: 2007年1月24日(水) 14:36
by box
> intの後にどんなものをかけばいいのでしょうか

全く手詰まり状態ですか?
最初に提示されたコードは、完全ではなかったものの
それをベースにすればいいところまでいくと思うのですが…。

ファイルを読んだり、文字種別を判定したりする関数は
すでにわかっているのですから、後はファイルに書く関数について調べれば、
おおかた完成すると思います。

Re:ファイル入力

Posted: 2007年1月24日(水) 17:11
by 大阪
まったくの手詰まりじょうたいです

Re:ファイル入力

Posted: 2007年1月25日(木) 04:35
by 管理人
もし自分でそこまでお書きになっているなら簡単に解けると思うのですが。

1、2番の問題は解けましたか?

例えば、argv[1]には何が入っているか答えられますか?

Re:ファイル入力

Posted: 2007年1月25日(木) 20:10
by 大阪
授業中にやっていた課題でできない分は自分で持ち帰る というもので先生も質問を受けつけてくれず ここまでできたのが奇跡なぐらいです 自分でもわからないまま解いているので正直この後どうしていいかわからない状況なので質問させていただきました

Re:ファイル入力

Posted: 2007年1月26日(金) 01:10
by 管理人
>関数sに代入する

という意味が解らないのですが、どういう意味ですか?

Re:ファイル入力

Posted: 2007年1月26日(金) 01:25
by 大阪
もしかしたら 変数Sかもしれません

Re:ファイル入力

Posted: 2007年1月26日(金) 02:11
by 管理人
このプログラム、どこまで自分でお書きになったものですか?

Re:ファイル入力

Posted: 2007年1月27日(土) 08:24
by 大阪
似たような問題を改造しただけでほとんど理解せずかきましたのが現状です

Re:ファイル入力

Posted: 2007年1月27日(土) 09:32
by 管理人
次回の回答はしばらくお待ち下さい。