C語言的scanf輸入字符串的回車問題


一、什么時候用getchar()

       1、除了%c的輸入而言:scanf輸入:abc[回車]后,遇到回車結束,但是回車還留在輸入流中。下一個scanf在輸入前碰到回車,會自動把回車拋棄,然后再輸入:efg,再碰到回車結束。所以加了getchar()時,它會吃掉一個回車。如果不加,在輸入前,它會自動刪除這個回車,所以結果是一樣的。重點是:空格、回車、跳格等結束符在輸入前碰到的話,會自動拋棄,輸入后碰到的話,就會認為結束。

        2、針對%c的輸入而言:%c遇到空格、回車、跳格等結束符都是會讀取的。

            例如:scanf("%c",&i);

                       scanf("%c",&j);

                       輸入a[回車]b的話,就會是:i = a; j = 回車;

                       但如果是:scanf("%c",&i);

                                               getchar(); 

                                               scanf("%c",&j);   

                            輸入a[回車]b,會是:i = a;  j = b;

                     所以一般用getchar()吃回車,都是用在%c 后面。

           3、應用:輸入一個大寫字母,輸出對應的小寫字母。輸入數據的第一行為一個正整數T, 表示測試數據的組數。然后是T組測試數據。每組測試數據包含一個大寫字母C。

               對於每組測試數據, 輸出它的小寫字母。

               

#include <stdio.h>

int main()
{
	int i,t;
	scanf("%d",&t);
	getchar();
	char a;
	for(i=0;i<t;i++)
	{
		scanf("%c",&a);
		getchar();
		printf("%c\n",a+32);
	}
	return 0;
}

            如果scanf("%d",&t);后不加getcahr();輸入:2 [回車],則 t = 2; a = 回車

                如果scanf("%c",&a);后不加getcahr(),輸入:2 [回車] A [回車] B ,則 t = 2; a = A ,下一個循環 ,a = 回車,而不是 B。

                                                  


免責聲明!

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



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