到目前为止,我的程序完美无瑕。但是在达到下面的代码时,它会出错,给我一个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;
concat的代码可以在这里找到,由David Heffernan发布:How do I concatenate two strings in C?
提前谢谢你:)
答案 0 :(得分:1)
(sizeof arr/sizeof *arr)
。strchr()
没有编译器警告?我很失望。始终使用编译器选项-Wall -Wextra
,并适当处理所有警告。可能还有更多错误。
答案 1 :(得分:1)
strchr
的签名是
char* strchr(char* string, int elem);
这意味着字符串应该是第一个而元素是第二个。当你写
strchr(Intermediary[i], "y")
您传递char
作为第一个参数,char *
作为第二个参数。这将导致代码绝对不能按照您的想法执行。
你的意思是写
strchr(Intermediary + i, 'y')
表示“搜索字符Intermediary
,i
步,偏移y
个字符{?1}}?
希望这有帮助!