写一个c程序将字符串s1中所有与字符s2匹配的子串
时间: 2024-10-10 21:02:39 浏览: 36
在C语言中,你可以使用循环和比较操作符来实现这个功能。下面是一个简单的示例程序,它会遍历字符串`s1`,检查每个子串是否等于给定的目标字符串`s2`:
```c
#include <stdio.h>
#include <string.h>
void find_substrings(char s1[], char s2[]) {
int len_s2 = strlen(s2);
for (int i = 0; i <= strlen(s1) - len_s2; i++) {
if (strcmp(&s1[i], s2) == 0) {
printf("Substring found at index %d: \"%s\"\n", i, s2);
}
}
}
int main() {
char s1[] = "Hello, world!";
char s2[] = "world";
find_substrings(s1, s2);
return 0;
}
```
在这个程序中,我们首先获取`s2`的长度,然后从`s1`的第一个字符开始,每次增加子串长度直到超过`s1`长度。如果找到完全匹配`s2`的子串,就打印出子串的起始索引。
相关问题
写一个简单的c程序,输入两个字符串s1和s2,删除字符串s1中所有与字符串s2匹配的子串,输出s1
当然可以。下面是一个简单的 C 程序,它使用了 `strstr()` 函数来查找 s1 中与 s2 匹配的子串,并通过循环和指针操作来删除这些子串:
```c
#include <stdio.h>
#include <string.h>
void remove_substrings(char *s1, char *s2) {
int len_s1 = strlen(s1);
int len_s2 = strlen(s2);
while (len_s1 >= len_s2) {
char *substring = strstr(s1, s2);
if (substring != NULL) {
// Move the characters after the substring one position forward
memmove(substring + len_s2, substring + len_s2 + 1, len_s1 - substring + 1);
len_s1 -= len_s2; // Reduce the length of s1 by the size of s2
} else {
break; // No more occurrences found, exit the loop
}
}
printf("After removing all occurrences of '%s': %s\n", s2, s1);
}
int main() {
char s1[100], s2[100];
printf("Enter string s1: ");
fgets(s1, sizeof(s1), stdin);
s1[strcspn(s1, "\n")] = '\0'; // Remove newline character from input
printf("Enter string s2: ");
fgets(s2, sizeof(s2), stdin);
s2[strcspn(s2, "\n")] = '\0'; // Remove newline character from input
remove_substrings(s1, s2);
return 0;
}
```
当你运行这个程序并输入两个字符串后,它会输出 s1 中去除所有 s2 子串后的结果。
JAVA实现输入2个字符串S1和S2,要求删除字符串S1中出现的所有子串S2,即结果字符串中不能包含S2。输入2行以回车结束的非空字符串,对应S1和S2。在一行中输出删除字符串S1中出现的所有子串S2后的结果字符串。
以下是实现代码:
```java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String s1 = scanner.nextLine();
String s2 = scanner.nextLine();
String result = s1.replaceAll(s2, "");
System.out.println(result);
}
}
```
首先用 `Scanner` 类获取用户输入的两个字符串 `s1` 和 `s2`,然后调用 `replaceAll()` 方法将 `s1` 中所有的 `s2` 子串替换为空字符串,得到结果字符串 `result`,最后输出 `result` 即可。
阅读全文