2015-04-30 42 views
1

我希望用戶能夠輸入如何在C中讀取一行中的多個單詞?

start <read_from_old_file.c> write_to_new_file.c 
//or whatever type of file 

所以一旦用戶鍵入命令「開始」,然後是「<」,這將表明讀取文件,而「>」將指示寫一個新文件。

問題是,我知道你可以使用

scanf("%s", buff); 

但這會讀一個單詞,而不是去到下一個。

+3

使用'fgets()'讀取整行,'strtok()'查找單詞。 – Barmar

+2

使用['fgets()'](http://pubs.opengroup.org/onlinepubs/9699919799/functions/fgets.html)或 ['getline()'](http://pubs.opengroup.org/ onlinepubs/9699919799/functions/getline.html)來讀取行。另見[如何在循環中使用'sscanf()'](http://stackoverflow.com/questions/3975236) –

回答

0

您可以使用:

scanf("%[^\n]%*c",buff); 

如果你想使用scanf()這一點。

%*c是由於擊中輸入而消除換行符。

0

一般來說,使用scanf系列函數是一個壞主意。相反,您應該使用fgetsfread來讀取數據,然後對其執行自己的處理。 fgets將一次讀取一行,而fread適用於當您不關心線路而只想要n字節的數據(適用於執行cat時)。

大多數程序都希望一次讀取一行。你需要分配你自己的夥伴傳遞給fgets

相關問題