scanf 輸入帶空格的字符串的一個小trick

       C/C++中用scanf 和 cin輸入字符串時如果遇到空格會被截斷,然而很多時候輸入的字符串都是需要帶有空格的,這就給我們帶來了困惑,有的小夥伴可能會用gets或getline等解決,今天給習慣用scanf的小夥伴提供一個小trick。

       scanf 輸入字符串時,默認回車和空格是輸入的間隔或結束符號,所以輸入帶空格,tab或者回車的字符串是不可以的,但我們可以利用格式符 “%[]” 。它的作用是掃描字符集合,例如:

char str[1000];
scanf("%[^a]", str);

其中 “a” 是一個具體的字符常量(包括控制字符)。當輸入字符串時,字符 “a” 將被當作當前輸入的結束符。利用此格式符就可以由編程者自己指定一個輸入結束符。

如果想輸入一串帶空格的字符串,可以將上述的字符 “a”改成“ \n”,即代表着輸入一行字符串,遇到換行符時結束。

char str[1000];
scanf("%[^\n]",str);
int len = strlen(str);
for(int i = 0; i < len; i++)
    printf("%c\n",str[i]);

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