換行符處理

巴扎客發表於2020-12-03

輸入大寫字母,列印出小寫字母。

input:A
B

output:a
b

這是一個極為簡單的題,但其裡面的某些東西,卻值得我們深究。
先寫程式碼吧,我們再討論裡面的知識。

#define _CRT_SECURE_NO_WARINGS
#include <stdio.h>
int main(void)
{
	int ch = 0;
	while ((ch = getchar()) != EOF)
	{
		printf("%c\n", ch + 32);
		getchar();//清理換行符
	}
	return 0;
}

複習一個緩衝區的概念。
輸入大寫字母,‘A’,A並不會直接輸出到螢幕,而是會傳送到一個叫緩衝區的地方。待輸入結束,再將輸出值列印到螢幕。而諾輸入一個A,再【Enter】,就會相當於輸入了A和’\n‘,進入緩衝區,再運算後列印。 而\n也會運算後列印,達不到輸出效果。需要隔離\n,並進入下一個迴圈。而未處理,據相當於兩次迴圈,A與\n都進入迴圈(兩次)。我們要做的是防止\n開啟並進入新的迴圈。getchar(),讀取\n,並進入下一個迴圈,再次讀取字元且判斷條件是否為真。【Enter】也是一個字元,‘\n’。這種型別的方法可以處理\n.防止被讀入。
還有一種迴圈處理,多用於函式中處理多個輸入。

while ((scanf("%d", &a)) != '\n')
		coutinue;

多次輸入的會被該迴圈截停,留在緩衝區,等待下一次輸出,直到輸入一個換行符,該迴圈結束,開始進入下一步。
這是一個方法好的,可以阻止換行符。

相關文章