我写了这些代码:
#include <stdio.h>
int main(void)
{
char input[50]={0};
scanf_s("%s",input);
printf("%s",input);
return 0;
}
当我在发布模式下运行它(Ctrl + F5)时,它不会打印任何内容,但在调试模式下(F5)它会执行,并且没有错误。在发布模式下,控制台屏幕是这样的:
abcd
Press any key to continue . . .
第一行是我的输入,这是调试模式下的屏幕:
abcd
abcdPress any key to continue . . .
当我使用scanf而不是scanf_s时,它会在调试和释放模式下进行打印。我错过了什么?
答案 0 :(得分:2)
此版本的scanf()
需要多一个参数,正确的方法是
scanf_s("%49s", input, 50);
并且,scanf()
返回一个值,你不应该忽略它,永远不会
if (scanf_s("%49s", input, 50) == 1)
printf("%s\n", input);
另外,添加'\n'
以刷新输出流而不需要fflush()
,并使警告尽可能让编译器变得烦人。