scanf() 在读取第三个取消引用的整数时使我的程序崩溃。我该如何解决这个问题?

问题描述 投票:0回答:1

/* 好的,这是相关代码 */

int
main(int argc, char *argv[]) {
    int *v1, *v2, *v3;
     printf("Enter three integers: ");
     scanf("%d %d %d", v1, v2, v3);
     printf("We made it this far?\n");
    /* Other stuff after */
    return 0;
}

/* 当使用任意三个整数的输入时,它将成功地将这些值分配给 *v1、*v2,但在尝试将第三个整数分配给 v3 时程序将超时。当我给出三个以上的整数时也会发生这种情况。我对程序进行了分段,并逐一扫描整数,在这个过程中:*/

int
main(int argc, char *argv[]) {
    int *v1;
    int *v2;
    int *v3;
    printf("Enter three integers: ");
    scanf("%d ", v1);
    printf("%d\n", *v1);
    scanf("%d ", v2);
    printf("%d\n", *v2);
    scanf("%d\n", v3);
    printf("%d\n", *v3);
    printf("We made it this far?\n");
    return 0;
}

/* 我真的看不出问题是什么。格式说明符看起来很好,问题在于无论变量名称、输入或其他任何内容。我在 VSCode 上运行,我们一次也没有进入调试打印“我们已经做到这一步了吗?”任何帮助将不胜感激!

c variables crash scanf
1个回答
0
投票

下面的代码将 int 转换为指针。程序将 int 变量的地址与指针相匹配。然后当你编辑int变量时,你可以看到相关的指针。我希望以另一种方式帮助您:

#include <stdio.h>

int main (int argc, char *argv[]) {
    int v1;
    int v2;
    int v3;
    int *p1 = &v1;
    int *p2 = &v2;
    int *p3 = &v3;
    printf ("Enter three integers: ");
    scanf ("%d", &v1);
    printf ("%d\n", *p1);
    scanf ("%d", &v2);
    printf ("%d\n", *p2);
    scanf ("%d", &v3);
    printf ("%d\n", *p3);
    printf ("We made it this far?\n");
    return 0;
}
© www.soinside.com 2019 - 2024. All rights reserved.