1. 程式人生 > >scanf()如何讀取一整行(轉)

scanf()如何讀取一整行(轉)

用scanf獲取一行字串包括空格的以及C語言函式

其內容為

#include<stdio.h>
int main()
{
      char str[1024];
      scanf("%[^\n]", &str);
      ...
      return 0;
}

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

其實scanf函式也可完成這樣的功能,而且還更強大。這裡主要介紹一個引數,%[ ],這個引數的意義是讀入一個字元集合。[ ]是個集合的標誌,因此%[ ]特指讀入此集合所限定的那些字元,比如%[A-Z]是輸入大寫字母,一旦遇到不在此集合的字元便停止。如果集合的第一個字元是"^", 這說明讀取不在"^" 後面集合的字元,既遇到"^" 後面集合的字元便停止.注意此時讀入的字串是可以含有空格的。

在這裡主要是想說明一點:
      如果要迴圈的從螢幕上讀取一行的話,就要在讀取一行後,在用%c讀取一個字元,將輸入緩衝區中的換行符給讀出來。否則的話,在下一次讀取一行的時候,第一個就遇到'\n',匹配不成功就直接返回了。