C++中的项目崩溃了,不知道为什么
Project in C++ is crashing, don't really sure why
当我开始与程序交互时,我经常崩溃。也许我的算法效率低下或其他什么,因为我对编码内容仍然很陌生,但我没有看到内存突然增加或任何正常崩溃原因。
#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++ 混淆。
相关文章:
- 我正在使用嵌套的while循环来解析具有多行的文本文件,但由于某种原因,它只通过第一行,我不知道为什么
- 我不知道为什么这段代码会让核心被转储?
- 反转字符串.不知道为什么这个逻辑是错误的.C++
- 没有函数模板的实例与我不知道为什么的参数列表匹配
- if-else 语句仅按特定顺序工作,我不知道为什么
- DirectX 11 引擎在第三次代码改进后没有突然运行,我不知道为什么
- 函数抛出seg错误,我不知道为什么
- 我不知道为什么复制构造函数的调用在 c++ 中不稳定
- 随着时间的推移,我的程序越来越慢,我不知道为什么.内存泄漏
- 分段故障(核心转储)-不知道为什么
- "错误:在'.标记'之前出现预期的主表达式,我不知道为什么
- 我正在制作c ++代码,但发生错误我不知道为什么
- std::cout << glGetString(GL_RENDER) << std::endl;抛出错误但不GL_Renderer或GL_Verision,我不知道为什么?
- 不知道为什么它不会停止循环
- 我的Arduino串行命令行不起作用,我不知道为什么
- 我正在编写一个拆分为 3 的合并排序,我不知道为什么它不起作用
- C++单例模式代码无法运行,不知道为什么?
- 我不知道为什么我的矢量无法推回
- 罗马数字输出C++总是"-858993460",不知道为什么?
- 合成错误不知道为什么会发生这种情况,请检查一下并告诉我这是我的编码还是视觉工作室