2017-04-15 92 views
0

我正在一個項目上,我似乎無法找出一種方式如何閱讀一個字符串與int不總是那裏。C - scanf字符串與可選int

例如: 我有2個變量

int argument = 0; 
char instruction[16]; 

而且輸入是:

"string" 57 

我希望把 「串」 的指令和參數57。這個我可以做

scanf("%s %d", instruction, &argument); 

問題是,輸入可以不經數,即

"string" 

然後,我喜歡把「串」在教學中,離開的說法等於0 但是程序需要在「字符串」之後有一個數字,並且在它獲取之前不會繼續。

當我可以有2種不同類型的輸入時,如何從標準輸入讀取輸入?我嘗試了幾種解決方案,但都沒有工作。

謝謝

回答

4

你這樣做,不要試圖直接解析標準輸入。相反,你

  1. 閱讀一行輸入與fgets
  2. 嘗試解析行成一個整數(可能與sscanf):
    • 如果你成功了,你有你的整數。
    • 否則你有原始字符串。
+0

嗨,你能詳細一點更是如何試圖與「sscanf的」解析?謝謝 –

+3

@TomášHorecký手冊頁是下一站。但請記住,'scanf'和'sscanf'函數族都會返回一個值:成功掃描的項目數。如果沒有足夠的項目,「scanf」將會停止,但「sscanf」不會。 –

+0

@WeatherVane謝謝,我絕對沒有意識到函數返回了一個值。我試圖快速把東西扔在一起,它似乎迄今工作。 –