首頁 >後端開發 >C++ >如何在 C 中穩健地驗證使用者輸入為 Double ?

如何在 C 中穩健地驗證使用者輸入為 Double ?

Susan Sarandon
Susan Sarandon原創
2024-12-22 20:54:10356瀏覽

How to Robustly Validate User Input as a Double in C  ?

在 C 中驗證使用者輸入為雙精確度

一個常見的程式設計任務是驗證使用者輸入以確保其符合特定條件。其中一個標準是確保輸入是有效的浮點數,特別是雙精確度數。以下是如何在 C 中進行此驗證:

基本驗證方法

double x;

while (1) {
  cout << ">";
  if (cin >> x) {
    // valid number
    break;
  } else {
    // not a valid number
    cout << "Invalid Input! Please input a numerical value." << endl;
  }
}

此程式碼透過嘗試從標準輸入讀取雙精確度值來提供基本驗證。如果成功讀取輸入,則繼續執行程式。否則,會顯示錯誤訊息。

修正無限輸入循環

但是,上述程式碼可能會導致即使輸入有效,程式也會不斷輸出錯誤訊息。這是因為 cin>> x 行因無效輸入而失敗,並在輸入流中留下錯誤標誌集。要解決此問題,需要在偵測到無效輸入後清除錯誤狀態。

while (1) {
  if (cin >> x) {
    // valid number
    break;
  } else {
    // not a valid number
    cout << "Invalid Input! Please input a numerical value." << endl;
    cin.clear();
    while (cin.get() != '\n') ; // empty loop to discard invalid input
  }
}

cin.clear() 行清除錯誤標誌,後續的空循環會消耗剩餘的無效字元在輸入線上。這可確保下一次輸入嘗試從頭開始。

透過執行以下步驟,您可以有效地將使用者輸入驗證為 C 中的雙精確度,從而提供強大且使用者友好的輸入驗證機制。

以上是如何在 C 中穩健地驗證使用者輸入為 Double ?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn