问题:scanf在vs中出现报错问题,过不了编译。
原因:vs使用的是更安全的c11标准,认为这类函数不安全。
解决方案:1.使用修改项目的属性,直接使用这些“不安全”的函数。
添加:/D_CRT_SECURE_NO_WARNINGS
2.使用c11标准中的“更安全”的函数
scanf_s:
int x;
scanf_s("%d", &x); //不需要使用第3个参数,用法和scanf相同
float f;
scanf_s("%f", &f); //不需要使用第3个参数, 用法和scanf相同
char c;
scanf_s("%c", &c, sizeof(c)); //需要使用第3个参数, 否则有告警
char name[16];
scanf_s("%s", name, sizeof(name)); //需要使用第3个参数,否则若输入太多会越界时也会将所有数据强行输入name中
int age;
char name[16];
scanf_s("%d%s", &age, name, sizeof(name));
与之类似的是gets函数,要使用gets_s
char line[32];
gets_s(line, sizeof(line)); //以防line越界