关于c语言scanf出现错误


#include <stdio.h>
#include <stdlib.h>
int gcd(int a, int b) {
    int r;
    r = a % b;
    while (r != 0) {
        a = b;
        b = r;
        r = a % b;

    }
    return b;
}


int main()
{
    int  n = 0;int m=0;
    scanf_s("%d%d", n,m);
    gcd(n, m);
    printf("%d", m);
    return 0;
}



img

scanf_s参数是指针,所以需要传入指针。scanf_s("%d%d",&n,&m);

【以下回答由 GPT 生成】

问题: 在上述C语言代码中的scanf函数中出现了什么错误?

答案:在调用scanf函数时,传递给函数的参数类型不正确。

出错的原因是什么?

答案:在函数调用scanf时,参数应该传递变量的地址,而不是变量的值。

如何修复这个错误?

答案:将scanf函数的调用参数修改为传递变量的地址即可。具体修复代码如下:

scanf_s("%d%d", &n, &m);

修改后的完整代码如下:

#include <stdio.h>
#include <stdlib.h>

int gcd(int a, int b) {
    int r;
    r = a % b;
    while (r != 0) {
        a = b;
        b = r;
        r = a % b;
    }
    return b;
}

int main() {
    int n = 0;
    int m = 0;
    scanf_s("%d%d", &n, &m);
    gcd(n, m);
    printf("%d", m);
    return 0;
}

修复后的代码中,scanf函数的调用参数为&n和&m,通过传递变量的地址来接收用户输入的值。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^