日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

在C語言中getchar的使用方法和讀取規則講解_C 語言

作者:(unstoppable) ? 更新時間: 2023-01-03 編程語言

前言

今天為大家分享getchar在C語言中的使用

一、getchar是什么?

getchar中文意思是獲取字符,getchar函數從標準輸入輸出里讀取下一個字符,返回類型為int整形,返回用戶輸入的ASCII碼值,如果到達文件末尾或者出錯返回EOF

二、getchar的使用方法

1.只獲取一次(字符/字符串)的代碼樣例

代碼如下(示例):

#include<stdio.h>
int main()
{
	int ch = getchar();
	putchar(ch);
	return 0;
}

代碼執行結果

在這里插入圖片描述

2.循環獲取(字符/字符串)的代碼樣例

代碼如下(示例):

#include<stdio.h>
int main()
{
	int ch = 0;
	while ((ch = getchar()) != EOF)
	{
		putchar(ch);
	}
	return 0;
}

注意事項
1.這里的EOF并不是輸入EOF循環結束
2.EOF的真實值是-1
3.這里的Ctrl+z的效果便是EOF

代碼執行結果

在這里插入圖片描述

到這里有些細心的朋友就會發現代碼里面并沒有換行指令為什么運行的結果會自動換行?

getchardu讀取字符的時候真的是在鍵盤上讀取的嗎?
getchar ? ? ? ? ? ? 緩沖區 ? ? ? ? ? ? ?鍵盤
其實在getchar和鍵盤之間有個緩沖區,在緩沖區是空
的時候,getchar就會等待鍵盤輸入字符,當用戶輸入
A時其實多輸入了一個回車,這是緩沖區里面就有A\n
getchar首先讀取了A然后輸出,然后又上去讀取了\n
再輸出\n就達到了換行的效果,所以B會在第三行輸入

三、getchar的讀取規則

講了這么多可能很多人都不明白這么一個代碼有什么用呢?其實在很多地方都會用到,比如模擬用戶登入場景。但是寫這個代碼的時候就要注意getchar的讀取規則
代碼如下(示例)

#include<stdio.h>
int main()
{
	char password[20] = { 0 };
	printf("請輸入密碼:>");
	scanf("%s", password);
	printf("請確認密碼(Y/N):>");
	int ch = getchar();
	if (ch == 'Y')
	{
		printf("確認成功");
	}
	else
	{
		printf("確認失敗");
	}
	return 0;
}

代碼運行結果

在這里插入圖片描述

在這里我們看到都還沒確認就直接輸出確認失敗,到這里大家應該都明白了是什么問題吧?沒錯就是\n的問題,這里getchar發現緩沖區里面還有一個\n就沒等我們輸入直接把\n讀走
那應該如何解決呢?
代碼如下(示例)

#include<stdio.h>
int main()
{
	char password[20] = { 0 };
	printf("請輸入密碼:>");
	scanf("%s", password);
	getchar();
	printf("請確認密碼(Y/N):>");
	int ch = getchar();
	if (ch == 'Y')
	{
		printf("確認成功");
	}
	else
	{
		printf("確認失敗");
	}
	return 0;
}

代碼運行結果

在這里插入圖片描述

接下來我們再想大家思考一個問題,當密碼里面有空格的時候還會確認成功嗎?

在這里插入圖片描述

沒錯還是會失敗,這又是為什么呢?因為數組把空格前面的123456讀走了,但是緩沖區里還剩下空格abcdef\n所以getchar還是會讀取緩沖區里面的東西
那該怎么解決呢?
代碼如下(示例)

int main()
{
	char password[20] = { 0 };
	printf("請輸入密碼:>");
	scanf("%s", password);
	int temp = 0;
	while((temp=getchar())!='\n');
	{
		;
	}
	printf("請確認密碼(Y/N):>");
	int ch = getchar();
	if (ch == 'Y')
	{
		printf("確認成功");
	}
	else
	{
		printf("確認失敗");
	}
	return 0;
}

代碼運行結果

在這里插入圖片描述

總結

從上面我們學習到了getchar,發現其實getchar的使用很簡單就是讀取字符,但是難的是它的讀取字符是的規則,所以我們在使用getchar的時候一定要慎重思考它的讀取規則。

原文鏈接:https://blog.csdn.net/m0_67077469/article/details/126073099

欄目分類
最近更新