目录
题目要求
输入两个字符串,从第一字符串中删除第二个字符串中的所有字符,最后并输出打印删除后的第一个字符串
举例说明:
第一个字符串是:"They are students"
第二个字符串是:"aeiou"
删除第二个字符串中的字符后,第一个字符串变成了:"Thy r stdnts"
代码实现
代码演示:
#include<stdio.h>
#include<string.h>
void move(char* str, int n)
{
int len = strlen(str);
for (int i = n; i < len - 1; i++)
{
str[i] = str[i + 1];
}
str[len - 1] = '\0';
}
int main()
{
char str1[100] = { 0 };
char str2[100] = { 0 };
// 输入
gets(str1);
gets(str2);
for (int i = 0; i < (int)strlen(str2); i++)
{
for (int j = 0; j < (int)strlen(str1); j++)
{
if (str2[i] == str1[j])
{
// 向前覆盖
move(str1, j);
}
}
}
printf("%s\n", str1);
return 0;
}
代码解析:
利用双重 for 循环拿出 str2 的每个字符并和 str1 所有字符比较,只要有相等字符的就向前覆盖,注意覆盖的时候,每覆盖一次就相当于 str1 少了一个字符,所有每覆盖一次就要在 str1 末尾改为 '\0' ,这样,每次 strlen 函数识别的时候和 printf 函数以 %s 的形式打印的时候,才能正确
代码验证: