2017-01-06 7 views
0

待つ:私は私のプログラムは、標準入力ファイルの変化を待ちたいC - 変更stdinと、私は次のコードを持っているユーザー入力

#include <stdio.h> 

int main() 
{ 
    char c = 0; 
    fclose(stdin); 
    stdin = fopen("newin", "r"); 
    if(stdin != NULLL) 
    { 
     scanf("%c", &c); 
     printf("%d", c); 
    } 
    else 
     printf("Error"); 
} 

を。空白を作成しましたが、0を返します。

「a」のような文字を入力すると、97のように印刷されます。

私は端末ウィンドウに書き込むのを待っていたように、scanfにファイルの変更を待たせることができますか?

+0

なぜあなたはstdinを終了しますか?あなたはこの答えをチェックしたいと思うかもしれません:http://stackoverflow.com/a/5925575/1212725。また、fcloseの戻りコードをチェックすることもできます。 – bruceg

+0

あなたのファイルに書き留めておきたいのですが、あなたのプログラムはあなたが書き込んだものを読んでいますか?あなたがターミナルでしたようなもの? –

+0

@GabrielPellegrinoはい、それは私の考えです – user7122079

答えて

1

私は端末ウィンドウに書き込むのを待っていたように、scanfにファイルの変更を待たせることができますか?

できません。

stdinからの入力とディスクからのファイルの処理方法が異なります。ファイルから読み込むときは、そのファイルを読み込んでから読み込む前に、そのファイルにすべてのものがある必要があります。

+0

それをシミュレートする方法はありますか?私はプロセスを実行し、別のプロセスに入力を与えたいと思っています。 – user7122079

+0

確かに。子プロセスをforkして、それらの間でパイプを使用することができます。 http://stackoverflow.com/questions/4812891/fork-and-pipes-in-cを参照してください。 –

+0

私はパイプを使うことができると知っていますが、どのプロセスでも使用できる解決策が必要です。 – user7122079

関連する問題