如何用空格读取scanf

mat*_*_nz 2 c gcc

我有一个奇怪的问题

我正在尝试使用scanf()从控制台读取字符串

像这样

scanf("%[^\n]",string1);
Run Code Online (Sandbox Code Playgroud)

但它没有读任何东西.它只是跳过整个scanf.

我在gcc编译器中尝试它

Suj*_*joy 5

尝试使用scanf空格读取字符串会带来不必要的缓冲区溢出问题,并且稍后会读入保留在输入缓冲区中的杂散换行符.gets()通常建议作为解决方案,但是,

从联机帮助页:

永远不要使用gets().因为在不事先知道数据的情况下无法判断get()将读取多少个字符,并且因为gets()将继续存储超出缓冲区末尾的字符,所以使用它是非常危险的.它已被用来打破计算机安全.请改用fgets().

因此,不要使用gets,而是使用fgetsSTDIN流从键盘读取字符串