C++为什么空格无法输出_C 语言 第8章-字符输入/输出和输入验证
1. 緩存區
#include大部分系統在用戶按下 Enter 鍵之前不會重復打印剛輸入的字符,這種輸入叫緩沖輸入。用戶輸入的字符被收集并存儲在緩沖區(buffer)。
- 把若干字符作為一個塊進行傳輸比逐個發送更節約時間。
- 如果用戶打錯字符,可以通過鍵盤修正錯誤。
緩沖分為兩類:
- 完全緩沖指的是當緩沖區被填滿時才刷新緩沖區(內容發送至目的地),通常出現在文件輸入中。
- 行緩沖指的是在出現換行符時刷新緩沖區,例如鍵盤輸入時按下Enter。
2. 結束鍵盤輸入
2.1. 文件、流和鍵盤輸入
文件(file)是存儲器中存儲信息的區域。
C有許多用于打開、讀取、寫入和關閉文件的庫函數。在較高層面上,C通過標準I/O包(standard I/O package)來處理文件,包括用于處理文件的標準模型和一套標準I/O函數,以避免不同操作系統的差異。
C程序處理的是流(stream),而不是直接處理文件。流是一個實際輸入或輸出映射的理想化數據流。
stdin流表示鍵盤輸入,stdout流表示屏幕輸出。
2.2. 文件結尾
在文件末尾放一個特殊的字符標記文件結尾。
在C中,getchar() 讀取文件檢測到文件結尾時返回 EOF(end of file),scanf() 函數也是。
EOF定義在stdio.h文件中,為-1。因為-1不對應任何字符。
#include在鍵盤輸入時,不能只輸入字符EOF或-1,在PC上,按下 CTRL + Z。
3. 重定向和文件
設計能與鍵盤和屏幕互動的程序,通過不同的渠道重定向輸入至文件和從文件輸出,即把stdin流重新賦給文件。
重定向輸入讓程序使用文件而不是鍵盤來輸入,輸出至文件而不是屏幕。
3.1. 重定向輸入
echo_eof < word< 是重定向運算符,該運算符使words文件與stdin流相關聯。因為 C 把文件和 I/O 設備放在一個層面,所以這些就是現在的 I/O設備。
3.2. 重定向輸出
echo_eof > myword> 是重定向運算符,創建了一個名為 mywords 的新文件。把 echo_eof 的輸出重定向至該文件中。 最后按 ctrl+Z 結束程序。
3.3. 組合重定向
. / echo_eof < mywords > savewords制作一個名為 savewords 的文件副本。
重定向運算符連接一個可執行程序和一個數據文件。
重定向運算符不能讀取多個文件的輸入,也不能把輸出定向至多個文件。
>> 可以把數據添加到現有文件的末尾。
| 把一個文件的輸出連接到另一個文件的輸入。
3.4. 注釋
重定向是一個命令行概念,所以要在命令行輸入特殊的符號發出指令。
4. 創建更友好的用戶界面
4.1. 使用緩沖輸入
#include程序讀取 n 作為用戶否認數字 1,然后還讀取一個換行符作為用戶否認數字 2。
while該程序把 f 視為 n。用 if 語句篩選其他響應。
char在編寫交互式程序時,應該事先預料到用戶可能輸入錯誤,設計程序處理用戶的錯誤輸入。
4.2. 混合數值和字符輸入
getchar() 讀取每個字符,包括空格、制表符和換行符;而scanf() 在讀取數字時會跳過空格、制表符和換行符。
#include5. 輸入驗證
5.1.
當編寫了一個處理非負數整數的循環,但是用戶很可能輸入一個負數。
long用 scanf() 的返回值避免用戶可能輸入錯誤類型的值。
long讓用戶再次輸入:
long該函數把一個 int 類型的值讀入變量 input 中,如果讀入成功,直接返回 input。如果讀取失敗,函數進入第一個 while 循環體(外層 while 循環體);然后內層循環將讀入錯誤的字符輸入,并丟棄輸入行的所有剩余內容。
5.2. 示例
#include程序遵循模塊化編程思想,使用獨立函數(模塊)來驗證輸入和管理顯示。
main() 函數管理程序流,為其他函數委派任務。
5.3. 輸入流和數字
考慮以下輸入:
is 28 12.4對于 C,這是一個字符流。
可以用 scanf() 函數將字符轉化為數字。
考慮以下輸入:
42- 在 scanf() 函數中
- 使用 %c 轉換說明,它只會讀取字符4并儲存在char類型變量中。
- 使用 %s 轉換說明,它會讀取字符4和字符2,并將其存儲在字符數組中。
- 使用 %d 轉換說明,它會讀取兩個字符,并計算出對應的整數值:4 *10 + 2,然后將對應的二進制數儲存在 int 類型的變量中。
- 使用 %f 轉換說明,它會讀取42.0,并儲存在float類型的變量中。
- getchar() 函數接收所有字符
6. 菜單瀏覽
總結
以上是生活随笔為你收集整理的C++为什么空格无法输出_C 语言 第8章-字符输入/输出和输入验证的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: dubbo是长连接还是短连接_从快手短视
- 下一篇: android 关闭软键盘_HTC官方社