c语言输入两行字符串 a 和 b,查找 a 中子串 b 的位置
时间: 2024-04-29 22:25:15 浏览: 121
你好!对于你的问题,我可以给出以下的C语言代码实现:
```
#include <stdio.h>
#include <string.h>
int main()
{
char a[100], b[100];
int i, j, flag;
printf("请输入字符串a:");
gets(a);
printf("请输入字符串b:");
gets(b);
for(i=0; i<=strlen(a)-strlen(b); i++)
{
flag = 1;
for(j=0; j<strlen(b); j++)
{
if(a[i+j] != b[j])
{
flag = 0;
break;
}
}
if(flag == 1)
{
printf("子串b在字符串a中的位置是:%d\n", i+1);
return 0;
}
}
printf("字符串a中不存在子串b!\n");
return 0;
}
```
当然,如果你对这段代码有任何疑问,也可以继续向我提问哦!
相关问题
C语言计算字符串中子串出现的次数,输入两个字符串,以回车隔开,其中母串在前,子串在后。
在C语言中,你可以通过遍历的方式计算一个子串在另一个字符串中出现的次数。下面是一个简单的示例程序,它使用`strstr()`函数来查找子串在母串中的位置,然后逐次减去子串长度并检查是否找到了新的匹配,直到找不到为止:
```c
#include <stdio.h>
#include <string.h>
int count_substring(char *str, char *substr) {
int index = 0;
while ((index = strstr(str, substr)) != NULL) { // 使用strstr找子串位置
index += strlen(substr); // 跳过找到的部分
str = index; // 更新搜索起点
}
return index == NULL ? 0 : -1; // 如果没找到返回0,已找到返回-1
}
int main() {
char mother[100], substring[100];
fgets(mother, sizeof(mother), stdin); // 输入母串
fgets(substring, sizeof(substring), stdin); // 输入子串
// 去除行尾的换行符
mother[strlen(mother)-1] = '\0';
substring[strlen(substring)-1] = '\0';
int occurrences = count_substring(mother, substring);
if (occurrences >= 0) {
printf("子串 '%s' 在母串 '%s' 中出现了 %d 次.\n", substring, mother, occurrences);
} else {
printf("子串 '%s' 在母串 '%s' 中未找到.\n", substring, mother);
}
return 0;
}
```
在这个程序中,用户需要通过键盘输入两个字符串,程序会输出子串在母串中出现的次数,如果没有找到则表示没有出现。
阅读全文