C言語関係掲示板

過去ログ

No622 コマンドライン入力でファイル名を指定

[戻る] [ホームページ]
No.6219

実行の際にファイルを指定
投稿者---およよ(2003/05/11 16:36:32)


実行の際に読み込んだり書き込んだりするファイルを
指定することはできますか?

<例>
実行ファイルが「pr」
読み込むファイルが「re」
書き込むファイルが「wr」
とした場合、実行の際に
[C:\Documents and Settings\dir]pr re wr
というふうに3つの名前をスペースで区切って実行。

No.6220

Re:実行の際にファイルを指定
投稿者---ともじ(2003/05/11 17:02:05)


こんにちは。

>実行の際に読み込んだり書き込んだりするファイルを
>指定することはできますか?
>
><例>
>実行ファイルが「pr」
>読み込むファイルが「re」
>書き込むファイルが「wr」
>とした場合、実行の際に
>[C:\Documents and Settings\dir]pr re wr
>というふうに3つの名前をスペースで区切って実行。

下記で理解できますか?
「もっと簡単にNo.6218」への返信も兼ねたつもりです。
#include <stdio.h>

int main(int argc, char *argv[])
{
    FILE *fin, *fout;
    char s[256];
    
    /* argc には pr re wr の指定で 「3」 が入ってくるはず。それ以外はエラー処理 */
    if (argc != 3) {
        printf("入力ファイル名と出力ファイル名を指定してください。\n");
        return 0;
    }
    
    /* argv[1] に "re" という文字列のポインタが入ってるのでこれを "r" モードでオープン */
    if ((fin = fopen(argv[1], "r")) == NULL) {
        printf("入力ファイルがオープンできません。\n");
        return 1;    /* エラー終了 */
    }
    
    /* argv[2] に "wr" という文字列のポインタが入ってるのでこれを "w" モードでオープン */
    if ((fout = fopen(argv[2], "w")) == NULL) {
        printf("出力ファイルがオープンできません。\n");
        return 1;    /* エラー終了 */
    }

    /* ここでファイルの読み書き処理 */
    /* この例は re ファイルを wr ファイルにコピーするもの */
    while(fgets(s, sizeof(s), fin) != NULL) {    
        fputs(s, fout);
    }

    /* 使い終わったファイルはクローズ */
    fclose(fin);
    fclose(fout);
    
    return 0;
}




No.6226

Re:実行の際にファイルを指定
投稿者---およよ(2003/05/11 21:37:35)


かなりわかりやすかったです。
ほんとにありがとうございました。