一般大家输入一串含空格字符串多用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