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