淺談getchar()函數

一、函數介紹

1.函數實現:

getchar 由宏實現:#define getchar() getc(stdin)

2.函數返回值:

getchar有一個int型的返回值, 返回值是用戶輸入的第一個字符的ASCII碼,如出錯返回-1,且將用戶輸入的字符回顯到屏幕.

3.函數功能:

當程序調用getchar時.程序就等着用戶按鍵.用戶輸入的字符被存放在鍵盤緩衝區中.直到用戶按回車爲止(回車字符也放在緩衝區中).當用戶鍵入回車之後,getchar纔開始從stdin流中每次讀入一個字符.如用戶在按回車之前輸入了不止一個字符,其他字符會保留在鍵盤緩存區中,等待後續getchar調用讀取.也就是說,後續的getchar調用不會等待用戶按鍵,而直接讀取緩衝區中的字符,直到緩衝區中的字符讀完爲後,纔等待用戶按鍵.

 

二、與getch()函數比較  
getch與getchar基本功能相同,差別是getch直接從鍵盤獲取鍵值,不等待用戶按回車,只要用戶按一個鍵,getch就立刻返回, getch返回值是用戶輸入的ASCII碼,出錯返回-1.輸入的字符不會回顯在屏幕上.getch函數常用於程序調試中,在調試時,在關鍵位置顯示有關的結果以待查看,然後用getch函數暫停程序運行,當按任意鍵後程序繼續運行.

 

三、函數應用舉例

/*
**從標準輸入讀取字符串,顯示到標準輸出
**
**在每行的後面添加checknum
*/

/************************************************************************/
/* 頭文件 */
/************************************************************************/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main(void)

{
       char c_ch;
        int n_line = 0;
        int b_atbegin = 1;
        char c_checknum = -1;
        while ( (c_ch = getchar()) != EOF)
        {
                  if (1 == b_atbegin)
                 {
                          b_atbegin = 0;
                          ++n_line;
                          printf("line %d:", n_line);
                  }
                  if ('\n' == c_ch)
                  {

                          printf(" %d", c_checknum);
                          b_atbegin = 1;
                          putchar(c_ch);
                   }
                   else
                   {
                             c_checknum += c_ch;
                             putchar(c_ch);
                    }
        }
        return EXIT_SUCCESS;
}

 

 

 

 

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