在C中,使用帶參數的scanf()
,scanf("%d %*d", &a, &b)
的行爲有所不同。它只爲一個變量輸入值而不是兩個!scanf()跳過變量
請解釋一下!
scanf("%d %*d", &a, &b);
在C中,使用帶參數的scanf()
,scanf("%d %*d", &a, &b)
的行爲有所不同。它只爲一個變量輸入值而不是兩個!scanf()跳過變量
請解釋一下!
scanf("%d %*d", &a, &b);
的*
基本上意味着說明符被忽略(整數被讀取,但是未分配)。
從man scanf報價:
* Suppresses assignment. The conversion that follows occurs as usual, but no pointer is used; the result of the conversion is simply discarded.
http://en.wikipedia.org/wiki/Scanf#Format_string_specifications
可選星號(*)之後的百分比符號表示由該格式說明讀出的數據將不被存儲在一個變量。
星號(*)表示將讀取格式的值,但不會寫入變量。 scanf
不希望此值的參數列表中包含變量指針。你應該寫:
scanf("%d %*d",&a);
有沒有辦法在我們想用'fscanf'讀取的字符之後忽略所有字符?即直到行結束時忽略所有事情?我一直在尋找那個相當長的一段時間。 – Bionix1441
@ Bionix1441'scanf'只讀取'stdin'(和'fscanf'文件中的字符)以滿足格式字符串的需要。如果您的變量中出現不正確的值,則表示您遇到與該格式匹配的錯誤。檢查返回值。如果它沒有幫助,我想你需要用例子發佈一個適當的問題。 –
但是,如果我放棄一個實際上不存在於文件上的整數,看起來fscanf不會失敗。 – Bionix1441