【发布时间】:2014-01-17 20:43:36
【问题描述】:
我在德克萨斯理工大学的编程课上,在上学期忍受了 Python 之后,我终于上了 C++ 课。今天我们在课堂上制作 HelloWorld 程序时,我和其他一些人得到了 Microsoft Visual Studio 2013,告诉我们使用 scanf_s 而不是像讲师在他的程序中使用的 scanf。以下是我的代码。
#include <stdio.h>
int main(){
int i,j;
float x,y;
scanf("input a number: %d %d %f %f", &i, &j, &x, &y);
printf("print numbers a : %d \n",i);
printf("print numbers a : %10.3d \n", i);
printf("print numbers a : %-10.3d", i);
fflush(stdin);
getchar();
return 0;
}
【问题讨论】:
-
我宁愿说......不要使用它,除非你对不可移植的代码没问题:afaik,这是微软的想法——我相信它只是一个“更安全”的 scanf 版本。 . 好意,但是...
-
scanf_s是一个 Visual Studio 扩展,应该具有额外的安全增强功能。它不可移植到 Visual Studio 之外。 -
避免这个问题,你使用的是 C++,所以使用 std::cin 和 std::cout。繁荣。
-
fflush(stdin)是未定义的行为。
标签: c++ visual-studio visual-c++ visual-studio-2013