在解釋這兩個函數之前,為了方便大家更容易理解,我們先來講講下面的這幅圖。
這個圖中的例子其實很簡單,我們就是把題目通過輸入設備(例如鍵盤鼠標)傳輸到計算機中,然後讓計算機進行運算得出結果,再然後把結果通過輸出設備(例如顯示器)反饋給我們,這是一個簡單的人機的交互過程。
在 C 語言中其實也是一樣的。在程序的運行中,我們經常會進行一些輸入輸出的操作,用來實現交互。為此, C語言便給出了 printf() 函數和 scanf() 函數用來實現輸入和輸出兩個動作。
其中,printf()函數用於向控制檯輸出字符,scanf()函數用於讀取用戶的輸入,下列將分別講解這兩個函數的用法。
1、printf()函數
在前面的舉例中,我們會經常使用 printf() 函數輸出數據,也就是類似於上面圖中的輸出設備,只不過它們的輸出的形式不相同。它可以通過【格式控制字符】輸出多個任意類型的數據。下面列舉了printf()函數中常用的格式控制字符。
常用printf()格式字符
常用格式字符 | 含義 |
%s | 輸出一個字符串 |
%c | 輸出一個字符 |
%d | 以十進制輸出一個有符號整型 |
%u | 以十進制輸出一個無符號整型 |
%o | 以八進制輸出一個整數 |
%x | 以十六進制輸出一個小寫整數 |
%X | 以十六進制輸出一個大寫整數 |
%f | 以十進制輸出一個浮點數 |
%e | 以科學計數法輸出一個小寫浮點數 |
%E | 以科學計數法輸出一個大寫浮點數 |
這個表格中列舉了很多格式控制字符,使用這些格式控制符可以讓printf()輸出指定類型的數據,接下來通過一個具體的案例來演示這些格式控制符的使用,如案例一所示.
案例一:
1 #include <stdio.h>
1 void main()
2 {
3 printf("%c %c", 'H', '\n');
4 printf("%s", "Hello, world!\n");
5 printf("%d %d %d \n", 1, 2, 3);
6 printf("%f %f \n", 2.1, 2.2);
7 }
運行結果如下圖所示:
在這個例題中 printf() 函數,通過格式控制字符
“%c”、“%s”、“%d”、“%f”,分別輸出了字符、字符串、整數、浮點數。
2、scanf()函數
scanf() 函數負責從控制檯上接收用戶的輸入,你可以理解為它就是一種輸入設備,它可以靈活接收各種類型的數據,如字符串、字符、整型、浮點數等, scanf() 函數也可以通過格式控制字符控制用戶的輸入,其用法與 printf() 函數一樣。接下來,通過一個獲取字符串的案例講解 scanf() 函數的用法,如案例二所示。
案例二:
1 #include <stdio.h>
8 void main()
9 {
10 char str[256]; // 字符數組保存得到的字符串
11 scanf("%s", str);
12 printf("%s\n", str);
13 }
運行結果如圖所示:
在案例二中,首先定義了一個長度為256的字符數組str,然後利用 scanf() 函數獲得用戶從控制檯輸入的字符,最後使用 printf() 函數將得到的字符串打印在控制檯上。本例中用戶從控制檯上輸入了Helloworld,並按回車符,此時scanf()函數會把回車符看做是字符串終止的標誌(也稱為終止符),將整個Helloworld讀取到str字符數組中。
要點留心:C語言中的終止符
在使用 scanf() 函數獲取用戶輸入的信息時,如果輸入的信息中包含某個終止符,scanf()函數就認為輸入結束,接下來就列舉一些常見的終止符,具體下表所示。
scanf()輸入字符串的終止符
字符 | 含義 |
0x20 | 空格 |
\t | 水平製表符(tab鍵) |
\n | 換行 |
\v | 垂直製表符 |
\f | 換頁 |
\r | 回車 |
接下來,以案例二為例,當程序運行後,如果輸入的字符串包含空格,例如“Hello world”,此時程序的運行結果如圖所示:
從此可以看出,儘管輸入的字符串是Hello world,但是程序只打印了Hello。這是因為Hello world中包含一個空格,空格也是一個終止符,因此scanf()只能讀到空格之前的內容。
END
想學習交流C語言可以申請加群:564950050,一個人單獨學習效率是很低的,只有一群相同目標的小夥伴一起學習討論,才是進步最快的方法。