删除字符数组中的某一个字符
方法1:稍微复杂一点
思路:用后面的数组覆盖前面的数组
#include"stdio.h"
#include"string.h"
void Delect_Char(str1, Aim,len);
int main()
{
char str1[100] = { 0 };
gets(str1);
int len = strlen(str1);//计算字符串的长度
printf("请输入你要删除的字符:");
char Aim;
scanf("%c", &Aim);
Delect_Char(str1, Aim,len);
return 0;
}
void Delect_Char(char str1[], char Aim,int len)
{
int i, j;
for (i = 0; i < len; i++)
{
if (str1[i] == Aim)
{
if (i == len - 1)
{
len--;
return;
}
for (j = i; j < len; j++)//用j记录要删除位置的起点
{
str1[j] = str1[j + 1];
}
len--;//整个数组的长度减少1
i--;
//删除一个字符后,坐标会向前移动一位
//比如 Hello world 删除l的时候,坐标前移一位,则第二个l就删不掉了
//所以要写一个 i--;
}
}
puts(str1);
}
方法2:更加容易理解
思路:创建一个新的数组,把原来数组里不等于要删除的字符的数组,赋值给新的数组。
#include"stdio.h"
void Delect_Char(str1, Aim);//函数的声明
int main()
{
//删除字符数组中的某一个字符
char str1[100] = { 0 };
char Aim = 0;
gets(str1);
printf("请输入你要删除的字符:");
scanf("%c", &Aim);
Delect_Char(str1, Aim);
return 0;
}
void Delect_Char(char str1[], char Aim)
{
char str2[100] = { 0 };
int i, j;
for (i = 0, j = 0; str1[i] != '\0'; i++)
{
if (str1[i] != Aim)
{
str2[j++] = str1[i];
//或者写成
//str2[j] = str1[i];
//j++;
}
}
puts(str2);
}