就是将删除元素后面的元素顺序前移一个位置,覆盖掉被删除的元素的值,然后数组中有效数据个数减一完成删除。
最笨的方法把后面的元素向前移动一位。
void delete_item(int a[], int item, int n)
{
int i, j;
i = 0;
while(a[i] != item) i++;
n--;
for(;i
}
设数组大小为M,删掉第N个元素。
int i;
for(i=N;i
a[M-1]=0;
从要删除的元素开始,将数组后面的元素覆盖前面的元素,就把这个元素删除掉了。覆盖时注意从要删除的元素开始往后遍历覆盖。
#include
#include
void delchr(char *s, char c)
{
char *str = s;
char *temp, *temp1;
while(*str != '\0')
{
if(*str == c)
{
temp = str;
temp1 = str + 1;
while(*temp1 != '\0')
{
*temp = *temp1;
temp++;
temp1++;
}
*temp = '\0';
continue;
}
str++;
}
}
int main()
{
char str[100];
char c;
gets(str);
scanf("%c", &c);
printf("the old string is:%s\n", str);
printf("delete '%c'\n", c);
delchr(str, c);
printf("end old string is:%s\n", str);
return 0;
}