2016-05-16 55 views
-1

我想知道從符合特定模式的輸入中讀取字符串的可能方式。更具體我想檢查正確的模式閱讀預期模式的字符串

例如,如果我期望一個像「乘以5,6」的命令,我想忽略空格,但檢查正確的模式,所以我想單獨「乘」「5 ,「和」6「來檢查每個輸入流的有效性

有沒有辦法用scanf來做到這一點?或得到?

謝謝

+0

有閱讀和字符串匹配無數存在的問題。甚至僅僅是'scanf'手冊頁就能提供足夠多的信息來回答你的問題。你做過任何基礎研究或搜索嗎? – kaylum

+0

其實我沒有搜索和研究,但無法理解答案。我剛剛開始學習C語言,但我的興趣還不清楚。 雖然我不明白苛刻的態度,但我認爲這是一個提問和學習的地方。無論如何,我會在發佈另一個問題之前成爲專家。 –

+0

這不是關於成爲專家。這是關於做基礎研究並提出一個明確的問題。如果你有一個想法'scanf'可以工作,那麼仔細研究手冊頁,搜索示例並編寫一些代碼來試用它。學習的最好方法是嘗試自己做。如果你編寫的代碼不起作用,你不能解決爲什麼然後回來顯示你的代碼並詢問關於該代碼的具體問題。事實上,你的問題不是用來說明你遇到問題的哪一部分問題。 – kaylum

回答

0

以下代碼將做你想做的。

#include <stdio.h> 

int main() 
{ 
    int num1, num2; 
    char operation[15]; 
    printf("\nPlease Enter Input: "); 
    scanf("%s%d ,%d",operation,&num1,&num2); // note the space before the comma 
    printf("\nYou entered \"%s %d,%d\"\n",operation,num1,num2); 

    return 0; 
} 

運行該代碼產生以下(輸出取決於輸入):

Please Enter Input: multiply 5,6 

You entered "multiply 5,6" 

與輸入的不同部分空間再次運行它:

Please Enter Input:  multiply  8 ,  120 

You entered "multiply 8,120" 

運行該代碼,並請嘗試刪除scanf中逗號前的空格,並查看在輸入「乘以5,7」時會發生什麼情況。

  • 注意:%s和%d自動忽略前導空格。

有很多奇特的事情,你可以做,讓scanf接受特殊格式的輸入。如果您有任何其他具體問題,請隨時詢問。

參考(C++網站,但相同的功能,C):

http://www.cplusplus.com/reference/cstdio/scanf/