2017-01-06 102 views
0

我有以下代碼:Ç - 改變標準輸入和等待用戶輸入

#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

當然。你可以派生一個子進程並在它們之間使用管道。請參閱http://stackoverflow.com/questions/4812891/fork-and-pipes-in-c。 –

+0

我知道我可以使用管道,但我想要一個解決方案,任何進程都可以使用它... – user7122079