getchar()函數與scanf()函數相關知識點

【項目1-字母及其編碼】
編寫一個程序,從鍵盤上輸入一個小寫字母,顯示這個小寫字母及它所對應的大寫字母以及它們的ASCII碼值。
#include <stdio.h>
#include <stdlib.h>

int main()
{
    char ch;
    printf("請輸入一個小寫字母:\n");
    scanf("%c",&ch);
    printf("小寫字母%c對應的大寫字母爲%c,對應的ASCII碼爲:%d\n",ch,ch-32,ch);//小寫字母和對應的大寫字母的ASCII碼相差32.
    return 0;
}
心得體會:
  1. 對於char類型和int類型,可以理解爲對內存單元中的數據解析方法不同。以上代碼在編譯時會用警告,是因爲對應的類型不同,可以忽略。
  2. 在計算機中任何數據最終都是以0101的二進制代碼表示,字符不能直接轉爲二進制,它是先將每個字符對應一個ASCII碼,即一個整形數,然後將整形數轉爲二進制。使計算機能夠識別。
  3. 對於%c使計算機一字符型來解析ch這個存儲單元,%d則以整形來解析。


提升:
1、緩衝區:對於輸入字符立即回顯的是無緩衝。緩衝分爲:完全緩衝和行緩衝。
  • 完全緩衝:緩衝區滿時被清空,常見緩衝區大小爲512B、4096B。常用於文件的輸入。
  • 行緩衝:遇到一個換行符時,將清空緩衝區(即回顯),(鍵盤輸入)。
2、getchar()和putchar()函數:這兩個函數分別是字符輸入、輸出函數,getchar()函數的返回值爲int類型,無形參。putchar()函數返回值也爲int類型,並帶有int類型的形參。
3、對於以上兩個輸入、輸出函數的換回值均爲int類型,通常寫代碼時是這樣定義的:
char ch;
ch=getchar();

注意:getchar()返回一個整型值而不是字符值!

若把getchar返回值存儲於ch中,將導致它被截斷!允許以上代碼並不會出錯,字符是以ascii碼錶示的,0-127;但對於一下可能存在錯誤:

char  ch ;
while((ch=getchar())!= EOF ) ;
這個被截斷的值被提升爲整形並與EOF比較,循環會出錯。

4、注意:C的整型算數運算總是至少以缺省整型類型的精度來進行的。爲了獲得這個精度,表達式中的字符型和短整型操作數在使用之前被轉換爲普通整型。即:整型提升


發佈了38 篇原創文章 · 獲贊 5 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章