c語言中,怎麼忽略輸入字串中的空格符

2021-12-19 13:18:29 字數 3408 閱讀 2694

1樓:匿名使用者

字串輸入可以用scanf函式和gets函式。scanf函式是當輸入的資料遇到空格就停止。比如輸入資料kkkkkk ssssss sssaa11。

用scanf("%s",str);得到的str為"kkkkkk",而空格後面的東西不會賦值給str。而使用gets(str);得到的str為kkkkkk ssssss sssaa11。gets函式是將一整行包括空格都賦值給str。

對於你給的例子。main裡面的**為:

main()

輸出結果就是a b c。

2樓:

#include

void main()

%*c是跳過下乙個字元 避免回車之類被吸收

3樓:

//經測試,這樣就可以了。

#include

void main()

4樓:匿名使用者

char c;

while (( c = getchar() ) == ' ')

5樓:匿名使用者

用gets()函式 或用陣列 a[1024]

for(i=0;a[i]!='/0')

scanf("%c",&a[i]);

6樓:匿名使用者

scnaf("%c %c %c",**);

c語言中用scanf函式輸入字元時,為什麼要在輸入控制符%c前面加空格?用scanf還有哪些要注意?

7樓:愛佳佳的恐龍

如果scanf中%d是連著寫的如「%d%d%d」,在輸入資料時,資料之間不可以用逗號分隔,只能用空白字元(空格或tab鍵或者回車鍵)分隔。

「2 (空格)3(tab) 4」 或 「2(tab)3(回車)4」等。若是「%d,%d,%d」,則在輸入資料時需要加「,」,如「2,3,4」。

比如scanf(" %c" ,&c);

你輸入了' a'(a前面有個空格),a就能被c接受。但控制符前如果沒空格,那c就接受了空格,明白了沒?這個可以防止誤操作,忽略空格輸入,接受第乙個非空格輸入。

8樓:黑白say晚安

加空格遮蔽了空白字元。

%c前沒空格,scanf()將讀取標準輸入流中的第乙個字元,%c前有空格,scanf()則讀取標準輸入流中第乙個非空白字元。

使用scanf函式時應該注意的問題:

scan:掃瞄       f :format,格式1、整數和小數分別使用使用控制符%d %lf 表示(float除外,用%f)。

2、引數前面使用&符號,&號前要空格。

3、scanf輸入語句中替換符後不能加空格,也不能加\n。

4、scanf()中的變數必須使用位址。

5、scanf()的格式控制串可以使用空白字元或其它非空白字元,使用空白字元會使scanf()函式在讀操作中略去輸入中的乙個或多個空白字元。使用非空白字元會使scanf()函式在讀入時剔除掉與這個非空白字元相同的字元。

6、在用"%c"輸入時,空格和「轉義字元」均作為有效字元。

9樓:匿名使用者

%c前面的空格就是用來遮蔽空白符的,

首先必須要知道c語言 scanf() 函式的特性,以及scanf()與緩衝區、標準輸入流之間的聯絡。在此之前,先介紹兩個專業術語。

1.緩衝區

緩衝區是一塊存放臨時輸入資料的記憶體,我們在鍵盤上輸入資料之所以不會馬上顯示,就是因為資料存放在了緩衝區,在上面例子中,當我們按下回車鍵後,緩衝區的資料會傳送到標準輸入流。

2.標準輸入流

標準輸入流(stdin)是檔案指標,scanf()就是從標準輸入流或許資料。

以上面**為例,當執行到scanf()時,

電腦開始執行以下操作:

開始等待使用者輸入

2.當我們輸入資料,在按下回車鍵前會把資料儲存在緩衝區,按下回車鍵後,會把資料以及換行符(\n)一起傳送到標準輸入流(stdin)中,

scanf()就是從標準輸入流中或許資料,上面第乙個scanf()要讀入乙個整數,它從標準輸入流中查詢,跳過空白符(空格、換行符、製表符)

3.如果遇到數字,則開始讀入,直到遇到非數字的字元結束,最後計算讀取到的數值,儲存到相關變數中。

使用scanf注意事項

1.引數的個數一定要對應

2.輸入的資料型別一定要和所需要的資料型別一致

3.每次呼叫完scanf後,記得呼叫乙個getchar()函式

擴充套件資料

1.函式 scanf() 是從標準輸入流stdio (標準輸入裝置,一般指向鍵盤)中讀內容的通用子程式,可以說明的格式讀入多個字元,並儲存在對應位址的變數中。

2.函式的第乙個引數是格式字串,它指定了輸入的格式,並按照格式說明符解析輸入對應位置的資訊並儲存於可變引數列表中對應的指標所指位置。

每乙個指標要求非空,並且與字串中的格式符一一順次對應。

參考資料

網頁鏈結

10樓:西西哩的小馬甲

空格確實不是必須的,但有了空格就可以忽略你輸入的空格。

例如:scanf(" %c" ,&c),你輸入了' a'(a前面有個空格),a就能被c接受。

但控制符前如果沒空格,那c就接受了空格,這個可以防止誤操作,忽略空格輸入,接受第乙個非空格輸入。

注意事項:

對於scanf()而言,%c是個較為特殊的說明符。 %c前沒空格,scanf()將讀取標準輸入流中的第乙個字元,%c前有空格,scanf()則讀取標準輸入流中第乙個非空白字元,遮蔽了空白字元。

11樓:圈圈叉叉叉叉圈

這絕對不是為了美觀,1樓不要誤人子弟。

空格確實不是必須的,但有了空格就可以忽略你輸入的空格,懂我的意思嗎?

比如scanf(" %c" ,&c);

你輸入了' a'(a前面有個空格),a就能被c接受。但控制符前如果沒空格,那c就接受了空格,明白了沒?這個可以防止誤操作,忽略空格輸入,接受第乙個非空格輸入!

12樓:夏天很冷

空格不是必須的,scanf("%c %c",a,b)只是提示在輸入時兩個字元必須有空格間開。如果是scanf("%c%c",a,b)那沒兩個輸入字元不要有空格,不過程式設計時最好加上空格,這算乙個書寫規範吧,要不然如果你scanf("%s%s",a,b)系統可能區分不了你的字串何時結束。

13樓:湮魂

不是必須加空格,這並不能防止誤輸入的,這種**寫出來,用的人肯定只能是熟知**如何編寫的人,有無空格分隔使用者會根據其格式使用,個人感覺就是為了能讓別人看清楚

14樓:我要度百

空格不是必須的吧,我們是感覺看起來美觀一些而加入的呀

c語言怎麼用scanf輸入字串

你的意bai思是輸入多餘的字元吧?du 1 因為zhi你用scanf輸入dao的字元都是輸入到緩衝區中的,例如 內你定義了乙個只接容受乙個字元的變數ch,但卻輸入了多餘的字元,這種情況會給編譯器造成困擾,因為他並不完全智慧型,通常採用這種方法釋放掉緩衝區內多餘的字元輸入 例如 2 char ch s...

c語言字串陣列逆序問題,C語言字串陣列逆序問題

第乙個問題 字串陣列的長度不包括最後的 0 第二處問題 1 把 for i 0 str1 i 0 i 後面加上乙個分號 2 把for i 0 str1 i 0 i 後面的花括號去掉 3 再把 puts str1 前面的花括號去掉就可以了 程式如下 include stdio.h int main c...

c語言,關於字串

mark 這個分析了下還挺複雜 想想先 這樣子話幾乎是沒有辦法實現的。因為哪一些字元屬於子串是不確定的,big可能是乙個子串,igb可能是乙個子串,gba可能是乙個子串。不過當你確定你需要查的子串時,可以進行判定的。比如查詢這個字串裡有多少個 big 我這裡提供乙個思路參考。這是乙個字串 strin...