scanf函數可以輸入空白符

    首先,問大家個問題:“C中scanf函數能否輸入空格?”

    可能很多人會白眼:“廢話!C只能用gets,fgets函數獲得空白符啊!”

    確實,在scanf函數中,可以使用 %c 來讀取一個字符,使用 %s 讀取一個字符串,但是讀取字符串時不忽略空格,讀字符串時忽略開始的空格,並且讀到空格爲止,因此只能讀取一個單詞,而不是整行字串,因此一般使用fgets來讀取一個字符串。

    之前我負,也這樣認爲的,其實不然,scanf函數也可以哦。而且還更強大。

    下面說一下如何用scanf獲得空格等空白符。這裏主要介紹一個參數:%[]。這個參數的意義是讀入一個字符集合。[]是個集合的標誌,因此%[]特指讀入此集合所限定的那些字符, 比如 %[A-Z] 是輸入大寫字母,一旦遇到不在此集合的字符便停止。如果集合的第一個字符是'^', 這說明讀取不在'^'後面集合的字符,即遇到'^'後面集合的字符便停止。而此時讀入的字符串是可以含有空格的。

#include <stdio.h>
int main()
{
   char a[20];
   scanf("%[^\n]", a);
   printf("%s\n", a);
   return 0;
}

    上面的程序就能輸入包括空格在內的字符串。[^\n]表示遇到換行符停止

    PS:其他的scanf函數方面的問題,親們自己查吧。用了很久的C,現在才知道scanf也能輸入空格的,一切都需要自己探索。

    共進!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章