コマンドライン引数を用いたファイルコピーについて

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
takaha
記事: 3
登録日時: 5年前

コマンドライン引数を用いたファイルコピーについて

#1

投稿記事 by takaha » 5年前

以下のプログラムを、コマンドラインで引数を与えることで複数(または単数)のファイルをコンソール画面に出力するという目的で作りました。
実行してもファイルの中身が出力されない(バッファにたまってしまっている?)のですが、どなたか解決策を教えていただけないでしょうか。。。?

コード:

#include<stdio.h>

/*strからの入力をdstに出力*/
void copy(FILE *src,FILE *dst)
{
    int ch;
    while(ch!=fgetc(src)!=EOF){
        fputc(ch,dst);
        fflush(stdout);
    }
}

int main(int argc,char *argv[])
{
    FILE *fp;
    
    if(argc<2){
        printf("abcd\n");
        copy(stdin,stdout);   /*標準入力から標準出力へ*/
        
    }
    else{
        while(--argc>0){
            if((fp=fopen(*++argv,"r"))==NULL){                                       /*先加算することで自身の配列名はカット*/
                fprintf(stderr,"ファイル%sが正しくオープンできません。\n",*argv);    /* *argv...各配列*/
                return 1;
            }
            else{
                printf("aiou\n");
                copy(fp,stdout);              /*入力したファイルを標準出力*/
                fclose(fp);
            }
        }
    }
    return 0;
}

Bull
記事: 149
登録日時: 9年前

Re: コマンドライン引数を用いたファイルコピーについて

#2

投稿記事 by Bull » 5年前

copy() 関数を修正します。

コード:

void copy(FILE *src, FILE *dst)
{
	int ch;
	while ((ch = fgetc(src)) != EOF) {		//修正
		fputc(ch, dst);
		//fflush(stdout);					//特に必要ないと思う
	}
}

takaha
記事: 3
登録日時: 5年前

Re: コマンドライン引数を用いたファイルコピーについて

#3

投稿記事 by takaha » 5年前

ありがとうございます!無事解決しました!

返信

“C言語何でも質問掲示板” へ戻る