C++中的项目崩溃了,不知道为什么

Project in C++ is crashing, don't really sure why

本文关键字:不知道 为什么 崩溃 项目 C++      更新时间:2023-10-16

当我开始与程序交互时,我经常崩溃。也许我的算法效率低下或其他什么,因为我对编码内容仍然很陌生,但我没有看到内存突然增加或任何正常崩溃原因。

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <math.h>
int a, b, c, d, e, f, g, h, i, j, k, l;
main()
{
    printf("    Minecraft Distance Calculator   n");
    printf("1. 2D Distance Calculationn");
    printf("2. 3D Distance Calculationn");
    printf("3. Y-Axis calculation (for mob farms)n");
    printf("Lower than 1 or higher than 3 will terminate the program!n");
    printf("#");
    scanf("%d", j);
    if (j=1)
    {
        printf("Starting X:n");
        scanf("%d", a);
        printf("Starting Z:n");
        scanf("%d", c);
        printf("Destination X:n");
        scanf("%d", d);
        printf("Destination Z:n");
        scanf("%d", f);
        k = sqrt(pow(a-d, 2) + pow(c-f ,2));
        printf("Distance in 2D: %d", k);
        getch();
    }
    else if (j=2)
    {
        printf("Starting X:n");
        scanf("%d", a);
        printf("Starting Y:n");
        scanf("%d", b);
        printf("Starting Z:n");
        scanf("%d", c);
        printf("Destination X:n");
        scanf("%d", d);
        printf("Destination Y:n");
        scanf("%d", e);
        printf("Destination Z:n");
        scanf("%d", f);
        l = sqrt(pow(a-d, 2) + pow(b-e, 2)+ pow(c-f ,2));
        printf("Distance in 3D: %d", k);
        getch();
    }
    else if (j=3)
    {
        printf("To be coming...");
    }
    else
    {
        printf("i warned you. just hit enter to stop it.");
        getch();
        return 0;
    }
}

程序在这里

如果我确实有一些错误,请忘记我的英语不好。

你的问题是你误用了scanf。下面是您的代码的代表性部分:

int j;
/* snip */
scanf("%d", j);

如果您阅读scanf文档,您会发现它基本上将指针作为参数,而不是值。通过传入int,你基本上是在告诉scanf从输入中获取一些数据并将其写入某个随机位置(可能是字节 0(的内存。此内存不可避免地受到保护,因此您会立即崩溃。

您想改为执行以下操作:

scanf("%d", &j);

这传入j 的地址,一个指针,scanf正确地将其从输入读取的数据写入该地址,然后可以正常从j读取。

阅读

文档,阅读一些教程,不要将 C 与 C++ 混淆。

相关文章: