C 利用cin輸入時檢測回車的方法

2022-09-15 18:06:16 字數 1387 閱讀 1877

今天做tju的oj ,其中一道題是先讀入乙個字串,再讀入乙個整數,迴圈往復,直到字串是空,也就是說回車鍵結束迴圈。

但是cin對空格和回車都不敏感,都不影響繼續讀入資料,所以需要一種新的方式檢測回車。

方法一:利用getchar()函式

1

//**************************將輸入的單詞逆序輸出*************************

//2 #include 3 #include4 #include 5 #include6

using

namespace

std;78

intmain()

2021

while(!s.empty())

25if (getchar() == '

\n') //

檢測如果是空格,退出迴圈;

26break

;27 cout << "";

28}29 cout <31return0;

32 }

getchar()是stdio.h中的庫函式,它的作用是從stdin流中讀入乙個字元,getchar()函式等待輸入直到按回車才結束(前提是緩衝區沒有資料),回車前的所有輸入字元都會逐個顯示在螢幕上。但只有第乙個字元作為函式的返回值。

舉個例子:

1 #include "

stdio.h

"2 #include "

stdlib.h"3

int main(void)4

程式執行時,首先停下來,等你輸入一串字串,輸入完畢後,它把你輸入的整個字串都輸出來了,咦,你不是說getchar()只返回第乙個字元麼,這裡怎麼?

因為我們輸入的字串並不是取了第乙個字元就把剩下的字串丟掉了,它還在我們的記憶體中,好比,開閘放水,我們把水放到閘裡去以後,開一次閘就放掉一點,開一次就放掉一點,直到放光了為止,這裡開閘動作就相當於呼叫一次getchar()。我們輸入的字串也是這麼一回事,首先我們輸入的字串是放在記憶體的緩衝區中的,我們呼叫一次getchar()就把緩衝區中里出口最近的乙個字元輸出,也就是最前面的乙個字元輸出,輸出後,就把它釋放掉了,但後面還有字串,所以我們就用迴圈把最前面的乙個字元乙個個的在記憶體中釋放掉,直到滿足迴圈條件退出為止。

例子中迴圈條件裡的'\n '實際上就是你輸入字串後的回車符,所以意思就是說,直到遇到回車符才結束迴圈,而getchar()函式就是等待輸入(或緩衝區中的資料)直到按回車才結束,所以實現了整個字串的輸出。當然,我們也可以把迴圈條件改一下,比如while ((c=getchar())!='a'),什麼意思呢,意思就是遇到字元'a'就停止迴圈,當然意思是如果你輸入「12345a213123 」那麼只會輸出到a前面的那個字元,結果是12345。

c 用cin和getline實現輸入回車結束輸入

今天做一道測試題遇到了乙個麻煩,我想要先讀入乙個字串,再讀入乙個整數,迴圈往復,直到字串是空,也就是說回車鍵結束迴圈。最開始的想法是 string s int d while cin s 但是,發現其實按enter鍵並不會結束,只有d的輸入不是整數,才會結束。或者ctrl z,查了下資料,原因是,c...

學習C 文字的輸入cin

for while do while迴圈語句另外還有if和switch選擇語句。另外重點是cin是如何處理字元輸入的。strcmp word,book 需要包含標頭檔案 當word大於 book 時,結果大於0 str1 str2 str1 str2 str1 str2 直接用關係符來比較,stri...

c 利用cin輸入資料到陣列中的一些問題

cin的常規用法是 int a cin a 這是將輸入的資料賦值給變數a。但是如果將輸入的資料賦值給乙個陣列時,不同的資料型別會有差別。如果是字元型別,可以如下操作 char a 10 cin a 這樣就會將輸入的字元的前10個賦值給a陣列。若輸入的字元超過10個,那會在陣列a的後面自動延長,並將輸...