C 为什么会在此处引发读访问冲突

C 为什么会在此处引发读访问冲突,c,error-handling,access-violation,C,Error Handling,Access Violation,到目前为止,我的程序工作得完美无缺。但是当到达下面的代码时,它出错了,给了我一个RAV char Intermediary[121] = "nnbyonnnnyonnnnyognnbynnnnnyngnrbynnnrnynnnrnyngnnbnonnnnnognrbnnnnrnnngwnbnonwnnnonwnnnogwnbnnnwnnnngwrbnnnwrnnnnwrnnng"; char* result[1024] = { "" }; for (i = 0; i < 120; i+

到目前为止,我的程序工作得完美无缺。但是当到达下面的代码时,它出错了,给了我一个RAV

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提出更正建议?