關於學習getchar()和scanf()時問題

一、getchar()函數:

  1. getchar()函數的原型爲 int getchar(void):該函數不帶形參,返回值爲int型,成功時,返回值爲字符的ASCII碼,出錯是爲-1.
  2. getchar()函數只對字符起作用,在stdio.h中定義,其實是個宏定義函數,是getc(stdin)的宏定義。
  3. 如果用戶在按回車之前,輸入了多個字符,除第一個字符外其他保留在緩衝區中,等待後續函數調用讀取。
  4. 後續的getchar()調用不用等待用戶按鍵,而是直接讀取緩衝中的字符,直當緩衝區的字符讀取完,纔等待用戶的按鍵輸入。
【實例】下面的示例演示了getchar()函數的使用,使用該函數獲取標準輸入控制檯中的字符,直到按回文件結束結尾EOF(-1),代碼如下。
#include <stdio.h>

int main(int argc, char const *argv[])
{
	int ch;
	while((ch=getchar())!=EOF)//按Ctrl+z
	{
		while(ch='\n') //回車不打印出來,因爲在輸入後需要按回車,使得回車也被存入緩衝區。 
		{
			printf("%d\n",ch );
		}

	}
	return 0;
}

二、scanf()函數:
  1. 函數原型爲:int scanf(char * .....),返回成功讀入的項目個數,如果沒有讀取任何項目,(即當它期望一個數字而您卻鍵入了一個非數字字符串是就會發生這樣的情況),函數返回0。
  2. 利用返回值可用來檢測和處理不匹配的輸入。
  3. 在char ch; scanf("%c",&ch);中若開始輸入空格,會自動忽略,若輸入A而非一個數字,A不會被輸入。
	while(scanf("%d",&a)!=1)
 當輸入不是一個整數時,退出循環。



注:當混合使用scanf和getchar函數時,調用getchar()之前scanf()恰好在輸入中留下換行符時,將產生問題。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章