C语言编程,用最简单的方法输入两个字符串str1和str2,输出str2在str1中的所有位置,没有则输出no。【样例输入】abcabcabc ab 【样例输出】0 3 6
时间: 2024-02-18 17:04:50 浏览: 52
好的,我知道你的问题了。以下是C语言的实现代码:
```c
#include <stdio.h>
#include <string.h>
int main()
{
char str1[100], str2[100];
int len1, len2, i, j, k, flag;
// 输入两个字符串
printf("请输入两个字符串,以空格分隔:\n");
scanf("%s%s", str1, str2);
len1 = strlen(str1);
len2 = strlen(str2);
// 找出str2在str1中的所有位置
flag = 0;
for (i = 0; i <= len1 - len2; i++)
{
k = i;
for (j = 0; j < len2; j++)
{
if (str1[k] != str2[j])
{
break;
}
k++;
}
if (j == len2)
{
printf("%d ", i);
flag = 1;
}
}
// 如果没有找到,输出no
if (flag == 0)
{
printf("no");
}
return 0;
}
```
解释一下代码:
首先,我们定义了两个字符串 `str1` 和 `str2`,分别用来存储输入的两个字符串。然后,我们使用 `scanf` 函数从标准输入中读取两个字符串,注意这里的格式化字符串为 `%s%s`,表示读取两个以空格分隔的字符串。
接下来,我们使用 `strlen` 函数分别计算出 `str1` 和 `str2` 的长度。
然后,我们使用两重循环遍历 `str1`,找出 `str2` 在 `str1` 中的所有位置。外层循环从 0 到 `len1 - len2`,内层循环从 0 到 `len2 - 1`,在每次循环中,我们分别比较 `str1` 和 `str2` 中对应位置的字符,如果不相等,就直接退出内层循环。如果内层循环正常结束,说明 `str2` 在 `str1` 中出现了,我们就输出它的起始位置。如果循环结束后仍然没有找到,就说明 `str2` 在 `str1` 中不存在,我们就输出 "no"。
希望这样解答能够帮到你!
阅读全文