新手问题,scanf返回值被忽略?
#include "stdio.h"int main()
{
int max(int x,int y);
int a, b, c;
scanf("%d,%d", &a, &b);
c = max(a, b);
printf("max=%d\n", c);
return 0;
}
int max(int x, int y)
{
int z;
if (x > y)z = x;
else z = y;
return (z);
}
运行报错,严重性 代码 说明 项目 文件 行 禁止显示状态
警告 C6031 返回值被忽略: “scanf”。 6 C:\Users\admin\source\repos\6\Source.c 7
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 C4996 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 6 C:\Users\admin\source\repos\6\Source.c 7
找了半天不知道问题出在哪,看不懂错误提示 stdio.h 是系统自带的头函数,要用方括号,不能用引号 本帖最后由 jackz007 于 2020-11-18 11:14 编辑
这句
#include "stdio.h" // 文件 "studio.h" 在当前目录
应该写成
#include <stdio.h> // 文件 "studio.h" 在编译器头文件缺省目录
这句
scanf("%d,%d", &a, &b);
改为
scanf_s("%d,%d", &a, &b);
试试 报错提示的这个错误其实不是出现的问题。是编译器升级了,认为scanf函数是不安全的,现在都升级成scanf_s函数了。你可以把scanf改为scanf_s应该就没问题了
至于楼上几位所说的 系统头文件使用尖括号,我的理解是系统头文件使用尖括号和双引号都可以,自己写的头文件必须使用双引号。
你可以先把第一个问题修改了,然后试试能否运行。可以运行的话,就没问题;不可以的话,就把双引号改为尖括号 风过无痕1989 发表于 2020-11-18 10:28
stdio.h 是系统自带的头函数,要用方括号,不能用引号
多谢大佬回复!不过好像二楼的才是正解。。 jackz007 发表于 2020-11-18 11:07
这句
应该写成
嗯嗯,成功了!多谢大佬教学!是浏览器升级的原因么? sunrise085 发表于 2020-11-18 13:04
报错提示的这个错误其实不是出现的问题。是编译器升级了,认为scanf函数是不安全的,现在都升级成scanf_s函 ...
试了一下,似乎尖括号或者双引号不是核心问题,将scanf改成sacnf_s才是解决关键。 sunrise085 发表于 2020-11-18 13:04
报错提示的这个错误其实不是出现的问题。是编译器升级了,认为scanf函数是不安全的,现在都升级成scanf_s函 ...
我用VS2015,他的程序,改为尖括号就能正常运行了,没有任何问题,所以,我也就没有给出我运行的程序了。没改之前,系统报错,scanf() 没有定义 风过无痕1989 发表于 2020-11-18 21:54
我用VS2015,他的程序,改为尖括号就能正常运行了,没有任何问题,所以,我也就没有给出我运行的程序了。 ...
好吧。不同的编译器差距还是蛮大的
页:
[1]