scanf("%[^\n]",str)函数一次输入含空格的小技巧

一般大家输入一串含空格字符串多用gets()函数,但其实对于scanf()也可以实现,笔者无意间看到这种写法,觉得很神奇也很有用。其中[]中表示字符串集合,^表示后面的字符不被包含。如:输入一段含空格的字符串且仅回车结束可以用%[^\n]的方式。不过如果想继续输入下一段字符串,则需要在前面加一个getchar()将上一次输入最后的回车符取出,不然下一行的输入遇到\n就会结束。

#include <iostream>
#include <cstdio>
using namespace std;
int main(){
   char str[100];
   scanf("%[^\n]",str);
   cout<<str<<endl;
   getchar();
   scanf("%[1-9]",str);
   cout<<str<<endl;
   return 0;
}

运行结果:

sd23 sd87 7s8d6 sdf\';/.,sd d
sd23 sd87 7s8d6 sdf\';/.,sd d
87668sdcsd sd76
87668

猜你喜欢

转载自blog.csdn.net/sl_world/article/details/79725024