getchar()函數和putchar()函數的深度學習


一、getchar()函數

1.getchar()叫做字符輸入函數,他的作用是可以輸入一個字符,(注意,只能輸入一個"字符"),不能輸入除了字符以外的其他東西。

2.getchar()是一個不接受參數的函數,因此括號內什么也不加。

3.getchar()函數通過讀取輸入緩存流中的字符,(一次只能讀取一個),來返回值,這個值會儲存在getchar()中。

getchar()的返回值是整數類型,讀取到的字符會按照ASCII碼進行轉換成整數,來儲存在getchar()中。

例如:

//對getchar()函數返回值的理解和實驗
#include <stdio.h>

int main(void)
{
char c=getchar();//鍵入6 由於現在輸入緩存流中沒有文本,所以getchar()函數會打開輸入緩存流,我就可以輸入文本了,getchar()只能
//讀取字符文本,輸入6,getchar當成數字字符6來讀取,6的ASCII碼是57,因此getchar()的返回值是57,getchar()中儲存的值是57,
//所以char類型(微整數類型)變量c被賦值為57
getchar();//這個getchar()用來清除輸入緩存流中的換行符\n,所以這個getchar()將\n儲存 ,由於\n對應的ASCII碼是10,因此這個getchar
//的返回值是10,即儲存的是10

printf("%d\n",c);//以整數形式打印變量c,所以直打印57
printf("%c\n",c);//以字符型時打印變量c,整數57在ASCII對應的是數字字符6,因此打印數字字符6

int d=getchar();//鍵入A 由於現在的輸入緩存流空,所以getchar()會打開輸入緩存流,輸入文本,getchar()函數讀取A這個字符,返回值是
//ASCII碼65,因此getchar()儲存的值是65,所以整型變量d被賦值為65
getchar();//這個getchar用於清楚輸入緩存流中的換行符


printf("%d\n",d);//以整數形式打印變量d,因此直接打印65
printf("%c\n",d);//以字符形式打印變量d,因此打印對應的ASCII碼中的A

return 0;
}

二、簡要補充sacnf()函數

scanf()函數同樣會打開輸入緩存流,每次按下回車,輸入緩存流中都會存入換行符,因此也需要對這個換行符及時清理。

注意:為了安全起見,不論是對scanf()函數鍵入整數,還是對scanf()函數鍵入字符,都要在每次鍵入后及時清除輸入緩存流。

例如:

//使用scanf()函數也是通過輸入緩存流來讀取
#include <stdio.h>

int main(void)
{
int x;
int y;
scanf("%d",&x);


scanf("%d",&y);//其實 由於鍵入的是整型,因此scanf()函數會自動跳過非數字,直到遇到數字為止,跳過的非數字就會在輸入流緩沖區中清除。
fflush(stdin);//fflush()函數能夠一次性的清除輸入緩存流

int z;
int g;
scanf("%c",&z);
getchar();
scanf("%c",&g);//鍵入兩個字符型,因此需要清除輸入緩存流中的換行符
getchar();

printf("輸出兩個整型:%d %d\n輸出兩個字符型:%c %c\n",x,y,z,g);

return 0;
}

 

三、putchar()函數

putchar()函數的參數是char類型(微整數類型)並且參數位置可以是char類型之間的運算,對於字符要加單引號' ',putchar輸出的是char類型的字符,對於char類型的整數,也會轉換成字符輸出。例如:

//putchar()函數的使用
#include <stdio.h>

int main(void)
{
char ch=1;
char gh='A';

putchar(ch+gh);//char類型之間的表達式
puts("\n");//putchar()函數不支持換行,因此在這加了一個換行符

putchar(90);//在char范圍之內的整型依舊可以
return 0;
}

 

四、getchar()函數最主要的作用(以及輸入型函數支持中文讀取)

getchar()函數最主要的作用就是能夠使使用者連續輸入文本,這些文本,這些文本是ASCII碼中的字符,使用方法:

(其實中文也是char類型的,這是后期添加的,所以一個中文對應着一個國標碼,getchar()能讀取中文並將中文轉換成國標碼(整數),儲存為getchar()的值。現在的輸入型函數都支持中文讀取)

//如何使用getchar()函數進行文本的連續輸入
#include <stdio.h>

int main(void)
{
int x;//這里為什么定義為int,如果想要連續輸入文本,就必須定義為int,因為我們需要使用stdio.h中的EOF這個常量,這個常量一般是-1
//不在char類型的范圍內,所以用int

while ((x=getchar())!=EOF)//EOF是stdio.h中自帶的一個常量,當getchar()讀取到文本結尾時,會遇到一個標志,這個標志就是EOF的值,
//如果只使用getchar進行一次文本輸入,即不使用循環,那么將不會有EOF代表的標志出現,因為不需要文本結束,使用回車后自己就結束了,
//而對於getchar在循環中進行文本輸入或者用它讀取文件夾中的內容,則需要EOF所代表的標志來結束 ,文件夾中,系統會自動在文件夾
//末尾加上EOF所代表的標志。而文本輸入的話對於windows來說需要使用ctrl+z來生成EOF所代表的標志。
{//生成后在按一下回車,getchar將讀取EOF這個標志,然后返回值是EOF,這個關系表達式不成立,因此不會在進行循環鍵入。
putchar(x); //雖然上面按了回車,但這個換行符不會對下面程序產生影響,這是特例,要記住。
}
getchar();
return 0;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM