C 为什么会在此处引发读访问冲突
到目前为止,我的程序工作得完美无缺。但是当到达下面的代码时,它出错了,给了我一个RAVC 为什么会在此处引发读访问冲突,c,error-handling,access-violation,C,Error Handling,Access Violation,到目前为止,我的程序工作得完美无缺。但是当到达下面的代码时,它出错了,给了我一个RAV char Intermediary[121] = "nnbyonnnnyonnnnyognnbynnnnnyngnrbynnnrnynnnrnyngnnbnonnnnnognrbnnnnrnnngwnbnonwnnnonwnnnogwnbnnnwnnnngwrbnnnwrnnnnwrnnng"; char* result[1024] = { "" }; for (i = 0; i < 120; i+
char Intermediary[121] = "nnbyonnnnyonnnnyognnbynnnnnyngnrbynnnrnynnnrnyngnnbnonnnnnognrbnnnnrnnngwnbnonwnnnonwnnnogwnbnnnwnnnngwrbnnnwrnnnnwrnnng";
char* result[1024] = { "" };
for (i = 0; i < 120; i++)
{
if (strchr(Intermediary[i], "y") && strchr(Intermediary[i], "b") && strchr(Intermediary[i], "o"))
//Conditions passes, set result
concat(result, Intermediary[i]);
else
{
break;
}
}
if (i == 120)
{
// No condition passed: throw an error
printf("Error: Condition failed :(\n");
exit(1);
}
printf("%s", result);
getchar();
return 0;
char intermediate[121]=“nnbyonnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn”;
char*result[1024]={”“};
对于(i=0;i<120;i++)
{
if(中间人[i],“y”)&中间人[i],“b”)&中间人[i],“o”))
//条件通过,设定结果
concat(结果,中介[i]);
其他的
{
打破
}
}
如果(i==120)
{
//未传递任何条件:引发错误
printf(“错误:条件失败:(\n”);
出口(1);
}
printf(“%s”,结果);
getchar();
返回0;
concat的代码可在此处找到,由David Heffernan发布:
提前感谢:)- 不要使用幻数:数组中的元素:
(sizeof arr/sizeof*arr)
没有编译器警告?我很失望。始终使用编译器选项strchr()
,并适当处理所有警告-Wall-Wextra
- 这个循环就像没有明天一样泄漏
可能还有更多错误。strchr的签名是
char* strchr(char* string, int elem);
这意味着字符串应该是第一个,元素应该是第二个。当你写作时
strchr(Intermediary[i], "y")
将char
作为第一个参数传递,将char*
作为第二个参数传递。这将导致代码绝对不会执行您认为它会执行的操作
你是想写信吗
strchr(Intermediary + i, 'y')
这意味着“搜索字符串intermediate
,偏移i
步数,查找字符y
希望这有帮助!重复数据消除工具我在双重启动时遇到问题,这就是为什么我使用VS2013,因此没有纯文本编译器选项。有什么更具体的方法可以帮助我解决这个问题吗?嗯,我很确定IDE在某个地方显示了编译器选项。看看项目属性。另外,您是否已经获得了可供参考的信息?请注意,m从设计上看,S编译器不是一个合适的C编译器。将中间层设置为char*会在程序前面给我带来一个错误,我不想对其进行分解。我正在尝试此处找到的Python代码的一个端口:,特别是第90行和第122行之间的代码。这意味着您的代码中存在其他错误。我向您保证,您的程序将如果您将
char
作为第一个参数传递给需要char*
的函数,则无法正常工作。请您在此处查看我对C代码的抱歉解释,并通过Github提出更正建议?