1

プログラムの入力をリダイレクトしようとしています。ターミナルで入力しているコマンドは次のとおりです。

./hello < name

「name」は、単一の文字列を含むファイルです。hello は、次のコードで構成されるコンパイル済みの C プログラムです。

int main(int argc, char *argv[])
{
        char message[100] = "Hello ";
        if(argc>1)
        {
                strcat(message, argv[1]);
                strcat(message, "\n");
        }
        else
        {
                strcat(message, "there\n");
        }

        printf("%s", message);
        return 0;
}

私が理解している限り、引数は名前ファイルの内容になるはずです。ただし、プログラムでは引数を検出できません (「こんにちは」と出力されます)。

4

2 に答える 2

4

これは、ファイルを読み取りname、最初の引数ではなく、標準入力に入れます。

fgetsgetcharscanfなどを使用して読み取ることができます。

同等のもの:

int c;

printf("Hello ");

while((c = getchar()) != EOF) {
    putchar(c);
}

puts("\nthere");
于 2013-09-29T20:49:42.707 に答える