请问这一行有什么bug吗?

代码中第五行出现了问题:

#include <stdio.h>
main(){
    int a, b,z;
    scanf_s("%d", "%d" ,& a, &b);
    z = max(a,b);
    printf("%d", z);
}
int max(int a, int b) {
    if (a > b)return a;
    else return b;
}

警告内容为:

警告 C6328 大小不匹配: 已将“char”作为 Param(2) 传递,但需要使用“32 bit operand”来调用“scanf_s”。这表示可能存在严重错误。若针对像 scanf 这样的函数报告此信息,可能表示发生缓冲区不足或溢出。

警告 C6271 向“scanf_s”传递了额外参数: Param(3) 未由格式字符串使用。

请问是什么意思?如何解决?

3个回答

scanf_s("%d", "%d" ,& a, &b);要按人家规定的格式写 scanf_s("%d,%d" ,& a, &b);
另外还有声明函数原型或把函数放在main前面

直接把scanf_s 修改为 scanf

 scanf_s("%d", "%d" ,& a, &b);
 写错了
 应该是
  scanf_s("%d,%d" ,& a, &b);
你那么写,第二个参数"%d"这个字符串常量的地址被作为接收第一个%d的输入的地址了,造成程序崩溃。
另外 main() 应该是 int main()
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问