我正在尝试在另一个字符串中搜索一个字符串(“arm”,例如“karma”)。
如果匹配,我将FOUND at (index)
打印到控制台(这里的“索引”是从0开始的字母数。)
否则,我打印NOT FOUND
。现在,控制台接受两个输入,然后退出。这是我到目前为止所得到的:
int main()
{
char string1[10];
char string2[10];
printf("Write first string: ");
scanf("%s", string1);
printf("Write second string: ");
scanf("%s", string2);
for (int i = 0; string1[i] != 0; i++)
{
if (string1[i] == string2[0])
{
for (int j = 0; string2[j] == string1[i + j]; j++)
{
if (string2 == '\0')
{
printf("FOUND at %d", i);
}
}
}
if (string1[i] == '\0')
{
printf("NOT FOUND");
}
}
return 0;
}
我提前为缺少子程序而道歉。我是超级的,对所有这些都是超级新手。
答案 0 :(得分:4)
strstr()
将完全按照您的意愿行事。
答案 1 :(得分:2)
如果NOT FOUND
退出外循环而不打印任何内容,则永远不会满足string1[i] != 0
条件。
如果你在外部循环之外移动该检查(你需要在循环之前定义i
,在函数上下文中),你就可以点击它。
此外,你FOUND
案例应该突破外部循环(请注意,简单的break
是不够的),否则你也会遇到NOT FOUND
案例
答案 2 :(得分:2)
您可以使用strstr()
吗?
示例:
char *str = "karma";
char *pChPos;
pChPos = strstr(str, "arm");
if(pChPos)
printf("Found \"arm\" at position %td\n", pChPos - str);
else
printf("Didn't find it!\n");