gpt4 book ai didi

c - 我得到这个错误 0xC0000005 : Access violation writing location 0x0086B000

转载 作者:行者123 更新时间:2023-12-01 12:06:19 24 4
gpt4 key购买 nike

我厌倦了 https://repl.it/languages/c 上的相同代码我没有收到任何错误,但是当我在 Visual Studio 2017 上粘贴相同的代码时,我收到有关以下内容的错误:

#include <stdio.h>
#include <string.h>
char input[100];
int calc();
int main() {
printf("Type \"help\" or enter a mathematical expression\n");
calc();
}
int calc() {
printf("Calc:\\> ");
scanf_s("%s", input);
if (strcmp(input, "help") == 0) {
printf("Help is on the way\n");
}
else {
printf("Answer:\\> %s\n", input);
}
calc();
return 0;
}

但是当我运行它时出现这个错误:

Exception thrown at 0x50FFD4EC (ucrtbased.dll) in Project.exe: 0xC0000005: Access violation writing location 0x0086B000.

最佳答案

问题一:

您在没有基本情况的情况下递归调用 calc()。这意味着您在调用该函数时将不可避免地导致堆栈溢出。

解决方法:在 calc() 中删除对 calc() 的递归调用。

问题2:

scanf_s 要求满足 %s 格式说明符的字符串参数紧接在给出缓冲区长度的整数变量之前。请参阅有关 MSDN 的文档.

解决方法:把字符串的长度也传过去:

scanf_s("%s", input, 100);

旁注:检查 scanf 系列函数的返回值通常是个好主意。

关于c - 我得到这个错误 0xC0000005 : Access violation writing location 0x0086B000,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56401499/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com