喫回車的原因及其方法

  • 爲什麼要喫回車

c語言中在讀取鍵盤數據時,一般是帶緩存的數據輸入。如用戶在按回車之前輸入了不止一個字符,其他字符會保留在鍵盤緩存區中,但是scanf()函數對這個回車確認符並不進行處理,回車符會留在輸入緩存區中。而下一次讀取字符是直接讀取緩衝區中的字符。因此,在下一個讀“字符”操作函數(getchar, scanf("%c"), gets(),等)運行時,會讀到回車字符。而在讀數值型或字符串數據時,scanf會從第一個非空白字符(空白字符指:回車,空格,TAB鍵)開始讀取,自動忽略前面的空白字符,並用空白字符結束該類型數據的輸入。因此,判斷是否一定要在scanf後面跟個 getchar()喫回車,要看下一個輸入的數據類型是什麼,如果是讀字符類操作,一般需要喫回車操作。

  • 喫回車的幾種方法

首先因爲本人還是小白,路還很長,慢慢學習積累,打算以後看到了好的新的方法再加。目前只有兩種方法可供參考。
1、在scanf或其他輸入操作後加getchar();
2、用"%*c"喫掉回車,%*c爲空字符,即不存儲字符的字符,比如你可以這樣寫:scanf("%c%c%c%*c",&a,&b,&c)!=EOF;
好了,看看下面這道題吧…

  • Description

有一字符串,包含n個字符。寫一函數,將此字符串中從第m個字符開始的全部字符複製成爲另一個字符串。

  • Input

數字n
一行字符串
數字m

  • Output

從m開始的子串

  • Sample Input

6
abcdef
3

  • Sample Output

cdef

  • 示例答案
#include<stdio.h>
int main()
{
	int j,i,n,m;
	char a[100],b[100];
	scanf("%d",&n);
	getchar();	//此處即喫回車操作
	for(i=0;i<n;i++)
	{
        scanf("%c",&a[i]);
	}
	scanf("%d",&m);
	for(i=m-1,j=0;i<n;i++,j++)
	{
        b[j]=a[i];
	}
    b[j]='\0';
	puts(b);
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章