尝试运行非常简单的程序时访问冲突
Posted
技术标签:
【中文标题】尝试运行非常简单的程序时访问冲突【英文标题】:Access violation when trying to run a very simple program 【发布时间】:2016-02-24 02:27:35 【问题描述】:“HW2_1_JM.exe 中 0x0F29F365 (msvcr120d.dll) 处的未处理异常: 0xC0000005:访问冲突读取位置0xFFFFFFFF。”
这是我的第一篇文章,这是我尝试运行此程序时经常遇到的错误。我是编程新手,所以我对我的代码质量感到抱歉。当它没有抛出这个错误时,它只是在一段时间之前无休止地暂停。我们认为错误在于int d
,因为当我们尝试同时打印n
和d
时,我们在打印n
后再次出现错误。
int main()
int a[10];
puts("Please input a value: \n");
int n;
scanf("%i", &n);
printf("\n you chose: %i\n", n);
puts("Please input a base value, between 1 and 11: \n");
int d;
scanf("%i", &d);
while (!(n = -1));
int q = n;
int k = 0;
printf(q);
while (q != 0);
a[k] = (q % d);
q = q / d;
printf(q);
k++;
for (int j = 0; j < 11; j++)
printf("Element [%d] = %d \n", j, a[j]);
puts("Please input a value: \n");
scanf("%i", &n);
printf("\n you chose: %i\n", n);
puts("Please input a base value, between 1 and 11: \n");
scanf("%i", &d);
system("pause");
return 0;
【问题讨论】:
while (!(n = -1));
。单个等号和分号看起来很可疑。
这是c还是c++?将printf(q)
更改为printf("%d\n", q)
哦,谢谢!我忘了那个。当我将其更改为“==”时,循环仍然没有启动。它只是在接受“d”的值后停止。它不再抛出错误,但我必须 X 退出 cmd 提示符。 @NickyC
update 我改变了“printf(q);”到 "printf("%d\n", q);"并没有看到任何变化。我的调试窗口仍然显示“无法找到或打开 PDB 文件”并显示“程序 ___ 已退出,代码为 -1073741510”@BarmakShemirani
这对我来说就像C
。另外,如果有人在d
中输入了0
,你的程序将会失败。
【参考方案1】:
printf 的签名是
int printf ( const char * format, ... );
您的电话 printf(q)
其中 q 是 int
【讨论】:
【参考方案2】:while (!(n = -1));
此处可以去掉分号,否则后面的 将不会成为while 循环的一部分。
while (!(n = -1));
n = -1
是一个赋值而不是一个比较,它总是被评估为true
,你可能想要n == -1
。
for (int j = 0; j < 11; j++)
你超出了数组的范围,应该是 [0; 10)。我想你想要j < 10
。
可能还有其他问题。您应该尝试使用调试器来找出实际的错误。
【讨论】:
【参考方案3】:您有一个 10 项数组,但尝试读取 11 个元素(0 到 10)。将循环更改为:
for (int j = 0; j < 10; j++)
printf("Element [%d] = %d \n", j, a[j]);
另外,这是错误的:
while (!(n = -1));
当您想要进行比较时,您正在做作业。你有一个错误的;
。你的代码应该是
while (n != -1)
【讨论】:
哇,这是一个很好的观点。我以为我在补偿数组大小,但我不是真的。我用推荐的修复程序更新了代码,它可以工作了!嗯......它有一些逻辑错误,比如我的数组充满了一些非常长的负数,但这是进步。感谢大家的快速响应! @JeremyMorgan 很高兴为您提供帮助!如果其中任何一个对您有帮助,请记得选择一个答案。以上是关于尝试运行非常简单的程序时访问冲突的主要内容,如果未能解决你的问题,请参考以下文章
Xcode 错误“冲突类型”为一个非常简单的函数运行 C 代码
运行使用 /clr 构建的 DLL 的本机 C++ 应用程序时访问冲突