ファイル操作のプログラム
アルファベットの小文字を大文字に変換しながらファイルをコピーするプログラムですが形として書いてみたのですが・・・小→大に変換する場所、コマンドライン引数、細かい間違い等教えてくださればと思います。プログラムの条件として
・コマンドラインには,「実行プログラム名」「コピー元ファイル名」「コピー先ファイル名」を入力してプログラムを実行し,これらを引数としてコピーを行う.
・
コマンドラインへの入力が正しく行われているか(コピー元ファイルやコピー先ファイルも入力されているか)確認を行う.
・ファイルから読み取った文字が,小文字であるかを判断する必要があるので,ファイルから文字を「1文字ずつ」読み取って,
小文字であれば変換してコピー先に出力,
その他の場合はそのままコピー先に
見にくいものではありますがよろしくお願いします。
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]))
{
FILE *infp, *outfp;
int ch;
if ( argc != 3 ){ /* コマンドラインからの入力が正しいか */
printf("There is no FILE NAME. \n");
exit(1);
}
if ( infp != argv[1] ) {
printf("INPUT FILE OPEN error. \n");
} else {
if ( outfp != [2] ) {
printf("OUTPUT FILE OPEN error. \n");
} else { /* 入力・出力ファイルの条件が整ったので,コピー作業を行う */
if ((infp = fopen(argv[1], "r")) == NULL) { /* コピー元ファイルのオープン */
printf("can't open %s\n", argv[1]);
return 1;
}
if ((outfp = fopen(argv[2], "w")) == NULL) { /* コピー先ファイルのオープン */
printf("can't open %s\n", argv[2]);
fclose(infp); /* コピー元ファイルのクローズ*/
return 1;
}
while ((ch = fgetc(infp)) != EOF) {
fputc(ch, outfp); /* コピー先ファイルにコピー元ファイルの内容を書き込む*/
}
fclose(infp);
}
fclose(outfp);
}
return 0;
}
お礼
edomin7777様、ありがとうございます。 便利なものを公開してくださっているものですね。 2011 Dec. 29.