ページ 11

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

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

コード:

#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;
}

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

Posted: 2018年9月23日(日) 18:41
by Bull
copy() 関数を修正します。

コード:

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

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

Posted: 2018年9月24日(月) 21:54
by takaha
ありがとうございます!無事解決しました!