在解釋這兩個函數之前,為了方便大家更容易理解,我們先來講講下麵的這幅圖。 這個圖中的例子其實很簡單,我們就是把題目通過輸入設備(例如鍵盤滑鼠)傳輸到電腦中,然後讓電腦進行運算得出結果,再然後把結果通過輸出設備(例如顯示器)反饋給我們,這是一個簡單的人機的交互過程。 在 C 語言中其實也是一樣 ...
在解釋這兩個函數之前,為了方便大家更容易理解,我們先來講講下麵的這幅圖。
這個圖中的例子其實很簡單,我們就是把題目通過輸入設備(例如鍵盤滑鼠)傳輸到電腦中,然後讓電腦進行運算得出結果,再然後把結果通過輸出設備(例如顯示器)反饋給我們,這是一個簡單的人機的交互過程。在 C 語言中其實也是一樣的。在程式的運行中,我們經常會進行一些輸入輸出的操作,用來實現交互。為此, C語言便給出了 printf() 函數和 scanf() 函數用來實現輸入和輸出兩個動作。
其中,printf()函數用於向控制台輸出字元,scanf()函數用於讀取用戶的輸入,下列將分別講解這兩個函數的用法。
1、printf()函數
在前面的舉例中,我們會經常使用 printf() 函數輸出數據,也就是類似於上面圖中的輸出設備,只不過它們的輸出的形式不相同。它可以通過【格式控制字元】輸出多個任意類型的數據。下麵列舉了printf()函數中常用的格式控制字元。
這個表格中列舉了很多格式控制字元,使用這些格式控制符可以讓printf()輸出指定類型的數據,接下來通過一個具體的案例來演示這些格式控制符的使用,如案例一所示.案例一:
#include
void main()
{
printf("%c %c", 'H', ' ');
printf("%s", "Hello, world! ");
printf("%d %d %d ", 1, 2, 3);
printf("%f %f ", 2.1, 2.2);
}
運行結果如下圖所示:
在這個例題中 printf() 函數,通過格式控制字元“%c”、“%s”、“%d”、“%f”,分別輸出了字元、字元串、整數、浮點數。
2、scanf()函數
scanf() 函數負責從控制臺上接收用戶的輸入,你可以理解為它就是一種輸入設備,它可以靈活接收各種類型的數據,如字元串、字元、整型、浮點數等, scanf() 函數也可以通過格式控制字元控制用戶的輸入,其用法與 printf() 函數一樣。接下來,通過一個獲取字元串的案例講解 scanf() 函數的用法,如案例二所示。
案例二:
#include
void main()
{
char str[256]; // 字元數組保存得到的字元串
scanf("%s", str);
printf("%s ", str);
}
運行結果如圖所示:
在案例二中,首先定義了一個長度為256的字元數組str,然後利用 scanf() 函數獲得用戶從控制台輸入的字元,最後使用 printf() 函數將得到的字元串列印在控制臺上。本例中用戶從控制臺上輸入了Helloworld,並按回車符,此時scanf()函數會把回車符看做是字元串終止的標誌(也稱為終止符),將整個Helloworld讀取到str字元數組中。要點留心:C語言中的終止符
在使用 scanf() 函數獲取用戶輸入的信息時,如果輸入的信息中包含某個終止符,scanf()函數就認為輸入結束,接下來就列舉一些常見的終止符,空格、水平製表符(tab鍵)、回車等
接下來,以案例二為例,當程式運行後,如果輸入的字元串包含空格,例如“Hello world”,此時程式的運行結果如圖所示:
從此可以看出,儘管輸入的字元串是Hello world,但是程式只列印了Hello。這是因為Hello world中包含一個空格,空格也是一個終止符,因此scanf()只能讀到空格之前的內容。希望對你有幫助!
自學C/C++編程難度很大,不妨和一些志同道合的小伙伴一起學習成長!
C語言C++編程學習交流圈子,【點擊進入】微信公眾號:C語言編程學習基地
有一些源碼和資料分享,歡迎轉行也學習編程的伙伴,和大家一起交流成長會比自己琢磨更快哦!