一.scanf()&printf()函數
scanf() 函數用於從標准輸入(鍵盤)讀取並格式化, printf() 函數發送格式化輸出到標准輸出(屏幕)。 scanf()函數原型為int scanf( char const* const _Format, ...),printf()函數原型為int printf(char const* const _Format, ...)。 scanf()和printf()是格式化輸入通過%d,%s,%c等限定輸入/輸出的類型及格式,因此書寫需要格外注意格式和類型,scanf()后面的變量需要取變量的地址。出於安全考慮,一般用scanf_s()代替舊版scanf()函數。
如下實例
#include <stdio.h> int main() { int c, d; printf("請輸入數值:"); scanf_s("%d %d", &c,&d); printf("輸出結果為:"); printf("%d %d\n", c,d); return 0; }
輸出如下
值得注意的是,當輸入如下代碼時
#include <stdio.h> int main() { int c; printf("請輸入數值:"); scanf_s("%d ", &c); // 注意%d后面有個空格 printf("輸出結果為:"); printf("%d\n", c); return 0; }
我們運行代碼,得到下面輸出界面

我們原先輸入10,按回車它並不會馬上輸出我們的結果,我們需要在輸入一個非空格和非換行符,再按回車鍵才會輸出我們的結果。因為scanf()函數里面的%d后面有個空格,所以他需要遇到非空格和換行符才會結束輸入。
二.getchar()&putchar()函數
getchar()和putchar()函數是單個字符輸入/輸出函數,getchar有一個int型的返回值。當程序調用getchar時.程序就等着用戶按鍵。用戶輸入的字符被存放在鍵盤緩沖區中。直到用戶按回車為止(回車字符也放在緩沖區中)。當用戶鍵入回車之后,getchar才開始從stdio流中每次讀入一個字符。getchar函數的返回值是用戶輸入的字符的ASCⅡ碼,如出錯返回-1,且將用戶輸入的字符回顯到屏幕。如用戶在按回車之前輸入了不止一個字符,其他字符會保留在鍵盤緩存區中,等待后續getchar調用讀取。也就是說,后續的getchar調用不會等待用戶按鍵,而直接讀取緩沖區中的字符,直到緩沖區中的字符讀完為后,才等待用戶按鍵。
代碼實例
#include <stdio.h> int main() { int c; printf("請輸入一個字符:"); c = getchar(); printf("\n你的輸入: "); putchar(c); printf("\n"); return 0; }
輸出結果

當要輸入多個字符並輸出顯示時,需要用到循環語句,可以利用getch()從鍵盤輸入一串字符到緩沖區,字符輸入以回車結束,回車字符同時存儲在緩沖區,然后用putchar()讀取緩沖區字符,設置條件遇到回車字符時結束即可。
代碼實例
#include <stdio.h> int main() { int c; printf("請輸入字符:"); while ((c=getchar()) != '\n') // 向緩沖區輸入字符,按回車時結束輸入 { putchar(c); // 讀取緩沖區的字符 } printf("\n"); return 0; }
輸出結果

還有一個函數get()getchar()基本功能相同,差別是getch()直接從鍵盤獲取鍵值,不等待用戶按回車,只要用戶按一個鍵,getch()就立刻返回,通常應用在游戲中。
三.gets()&puts()函數
gets()和puts()是文本行輸入/輸出函數。gets()從標准輸入設備讀字符串函數,其可以無限讀取,不會判斷上限,以回車結束讀取。出於安全考慮,一般用gets_s()代替gets()函數。
代碼實例
#include <stdio.h> int main() { char str[100]; printf("請輸入文本:"); gets_s(str); printf("你的輸入為: "); puts(str); return 0; }
輸出結果

