我有一个奇怪的问题
我正在尝试使用scanf()从控制台读取字符串
像这样
scanf("%[^\n]",string1);
Run Code Online (Sandbox Code Playgroud)
但它没有读任何东西.它只是跳过整个scanf.
我在gcc编译器中尝试它
尝试使用scanf
空格读取字符串会带来不必要的缓冲区溢出问题,并且稍后会读入保留在输入缓冲区中的杂散换行符.gets()
通常建议作为解决方案,但是,
从联机帮助页:
永远不要使用gets().因为在不事先知道数据的情况下无法判断get()将读取多少个字符,并且因为gets()将继续存储超出缓冲区末尾的字符,所以使用它是非常危险的.它已被用来打破计算机安全.请改用fgets().
因此,不要使用gets
,而是使用fgets
STDIN流从键盘读取字符串