回答
您必須檢查scanf返回的內容。如果你輸入「E」並有%d,那麼你將會有所謂的匹配失敗。 檢查以下scanf手冊頁(它適用於linux,但一般應該是相同的):scanf man page
scanf
返回匹配元素的數量。
返回值
這些函數返回成功匹配 和分配輸入項目,其可爲少於規定的,或早期匹配失敗的甚至在 零事件的數量。
你可以這樣做:
while(scanf("%d", &n) == 1) {
// do something with n
}
這worked..thanks很多 –
你需要得到兩件事情從scanf
信息:
- 無論分配什麼
n
,並 - 多少個字符它消耗了(如果您使用的是
sscanf
)。
scanf
返回它已經完成了多少分配。所以如果它成功分配到n
,它將返回1,否則它將返回0.
我在這裏假設輸入應該是一個浮點寫出mantissaEexponent
,但這是隻是爲了說明的目的。對於標準輸入(scanf
):
int mantissa, exponent;
int mantissaSet = 0, int exponentSet = 0;
mantissaSet = scanf("%d", &mantissa);
char c = getc();
if (c != EOF && c == 'E') {
exponentSet = scanf("%d", &exponent);
}
if (mantissaSet) { ... /* mantissa was set */ }
if (exponentSet) { ... /* exponent was set */ }
當從字符串得到輸入,你需要知道到哪裏尋找'E'
如果有一個輸入,所以你需要添加一個%n
轉換來獲取這些信息出。下面的代碼說明它如何工作的字符串(與sscanf
):
const char * string = "1234E56";
int mantissa, exponent;
int mantissaSet = 0, exponentSet = 0;
int charCount = 0;
int mantissaSet = sscanf(string, "%d%n", &mantissa, &charCount);
if (string + charCount == 'E') {
exponentSet = sscanf(string + charCount + 1, "%d%n", &exponent, &charCount);
...
}
-1臃腫的回答充滿了unrelevant東西 –
@KarolyHorvath:。這怎麼unrelevant是超越我的提問者顯然想獲得看似可選的整數,然後是一個可選的E和一個整數。我已經展示瞭如何做到這一點t,同時使用'scanf'和'sscanf',因爲'sscanf'的技巧是不同的。這是爲了完整。我不認爲單線球員對於新手式問題是非常有用的,因爲需要更多的指導。這就是所謂的教育學,你知道。那些新的答案並不是真空。 –
「當用戶輸入'E'時,我不得不停止輸入」 - 我猜E代表退出。 –
- 1. 如何知道GLCameraRipple示例中的漣漪何時停止?
- 2. 反向while循環如何知道何時停止在JavaScript中?
- 3. CoreBluetooth知道廣告何時停止
- 4. 知道地圖何時停止滾動(如JavaScript API中的「moveend」)
- 5. 不知道如何同時
- 6. 如何知道何時停止InputStream緩衝
- 7. UipickerView如何知道它何時停止移動
- 8. 如何知道我的Android應用何時終止?
- 9. 如何知道客戶端何時停止ping Java服務器?
- 10. node.js過程如何知道何時停止?
- 11. 該算法如何知道何時停止?
- 12. 如何遞歸階乘函數知道何時停止
- 13. 如何知道UIScrollView何時停止減速?
- 14. 如何知道Chromium何時停止發出網絡請求?
- 15. 如何知道畫廊小部件何時停止滾動?
- 16. 如何知道我的tomcat Web應用程序何時停止?
- 17. 如何知道推送視圖何時停止移動。 UIKit Dynamics
- 18. 如何知道float變量何時會停止增加0.001?
- 19. 我不知道如何在停止時顯示計時器
- 20. 如何知道
- 21. 如何知道
- 22. 如何知道
- 23. 如何知道何時進行活動?
- 24. 如何知道何時創建窗口?
- 25. 如何知道KendoMobile ListView何時滾動?
- 26. 如何知道timeStamp何時更改?
- 27. 如何知道FileSystemWatcher何時完成
- 28. 如何知道dllmain何時完成?
- 29. 如何知道cocoahttpserver何時開始
- 30. 如何知道Core Animation何時完成?
您正在掃描「E」的%d格式說明符? – Sadique
實際上,我必須把整數作爲輸入,並在用戶輸入時停止輸入E –
爲什麼在世界上你會使用E?只需使用你的程序不會使用的值 - 可能是-1? – Sadique