含空格的字符串的输入

在做1209的时候需要带空格的输入字符串,但是scanf会以空格结束输入,这个很不方便,查了点资料后发现gets函数可以实现带空格的输入因为gets是以回车结束的。

gets()函数的原型:char * gets(char *str)
函数功能:从标准输入流读取字符串并回显,读到回车符时退出

但是同时有人说不推荐使用gets()函数。因为它有个能致命的缺陷,就是不能指定缓冲区,当输入的字符大于缓冲区写入的空间,会使缓冲区溢出,这将有可能会导致不可预料的错误,这种错误可能是非常严重的。

还看到一种scanf的用法,我很是喜欢,虽然不是很懂原理但是还是先记下了

1
2
3
4
scanf("%[^n]",str);



1
2
3
4
5
6
7
8
9
#include <cstdio>
int main()
{
char str[10];
scanf("%[^n]", str);
printf("%s", str);
}


记录下,以后一定会有用的!