在C語言中提供了許多內置的輸入輸出函數。
標準文件的定義
在C語言中會把所有設備當文件來處理。為了訪問鍵盤和屏幕,以下三個文件會在程序執行時而打開。
標準文件 | 文件指針 | 設備 |
---|---|---|
標準輸入 | stdin | 鍵盤 |
標準輸出 | stdout | 屏幕 |
標準錯誤 | stderr | 屏幕 |
? ? C 語言中的輸入/輸出通常使用內置的printf() 和 scanf()函數。
scanf() 函數用于從標準輸入(鍵盤)讀取并格式化, printf() 函數發送格式化輸出到標準輸出(屏幕)。
#include
int main()
{ ? ?printf("STM32"); ?//顯示引號中的內容 ? ?return 0;
}
編譯以上程序,輸出結果為:
STM32
? ?解析:
在C 語言程序都需要包含?main()?函數。 代碼從?main()?函數開始執行。
printf()?用于格式化輸出到屏幕。printf()?函數在?"stdio.h"?頭文件中聲明。
stdio.h?是一個頭文件 (標準輸入輸出頭文件) and?#include?是一個預處理命令,用來引入頭文件。 當編譯器遇到?printf()?函數時,如果沒有找到?stdio.h?頭文件,會發生編譯錯誤。
return 0;?語句用于表示退出程序。
%d 格式化輸出整數
編譯以上程序,輸出結果為:
Number = 5
printf() 函數的引號中使用 "%d" (整型) 來匹配整型變量 testInteger 并輸出到屏幕。
%f 格式化輸出浮點型數據
#include
int main()
{ ? ?float f; ? ?
printf("Enter a number: ");
// %f 匹配浮點型數據 ? ?scanf("%f",&f);
printf("Value = %f", f);
return 0;
}
getchar() 與putchar() 函數
? int putchar(int c)?函數把字符輸出到屏幕上,并返回相同的字符。這個函數在同一個時間內只會輸出一個單一的字符。您可以在循環內使用這個方法,以便在屏幕上輸出多個字符。????
????int getchar(void)?函數從屏幕讀取下一個可用的字符,并把它返回為一個整數。這個函數在同一個時間內只會讀取一個單一的字符。您可以在循環內使用這個方法,以便從屏幕上讀取多個字符。
看下面的實例:
上面的代碼被編譯和執行時,它會等待您輸入一些文本,當您輸入一個文本并按下回車鍵時,程序會繼續并只會讀取一個單一的字符,如下:
$./a.out Enter a value :runoob You entered: r
gets() 與 puts() 函數
????char *gets(char *s)?函數從?stdin?讀取一行到?s?所指向的緩沖區,直到一個終止符或 EOF。
int puts(const char *s)?函數把字符串 s 和一個尾隨的換行符寫入到?stdout。
運行如下:
$./a.out Enter a value :runoob You entered: runoob
scanf() 和 printf() 函數
????int scanf(const char *format, ...)?函數從標準輸入流?stdin?讀取輸入,并根據提供的?format?來瀏覽輸入。
????int printf(const char *format, ...)?函數把輸出寫入到標準輸出流?stdout?,并根據提供的格式產生輸出。
????format?可以是一個簡單的常量字符串,但是您可以分別指定 %s、%d、%c、%f 等來輸出或讀取字符串、整數、字符或浮點數。還有許多其他可用的格式選項,可以根據需要使用。如需了解完整的細節,可以查看這些函數的參考手冊。現在讓我們通過下面這個簡單的實例來加深理解:
運行顯示如下:
$./a.out Enter a value :runoob 123 You entered: runoob 123
值得注意的是,scanf() 期待輸入的格式與您給出的 %s 和 %d 相同,這意味著您必須提供有效的輸入,比如 "string integer",如果您提供的是 "string string" 或 "integer integer",它會被認為是錯誤的輸入。另外,在讀取字符串時,只要遇到一個空格,scanf() 就會停止讀取,所以 "this is test" 對 scanf() 來說是三個字符串。
審核編輯:黃飛
?
評論
查看更多