C语言删除数组指定元素

Python014

C语言删除数组指定元素,第1张

C语言删除数组指定元素的源代码如下:

#include <stdio.h>

main()

{

char s[80],c

int j,k

printf("\nEnter a string: ")

gets(s)

printf("\nEnter a character: ")

c=getchar( )

for(j=k=0s[j]!= '\0'j++)

if(s[j]!=c)

s[k++]=s[j]

s[k]= '\0'

printf("\n%s\n",s)

system("pause")

}

扩展资料

自定义函数代码如下

function delarrayval2($arr,$v){

$keyarr = array_keys($arr, $v)

if(count($keyarr)){

foreach ($keyarr as $key) {

unset($arr[$key])

}

}

return $arr

}

对于数组删除,一般就是使用后面数组元素前移的操作,来覆盖前一元素,达到删除的效果。。。。

例如数组a[10],要删除a[5]这个元素,那么只需要把后面的元素前移一位就行了,也就是a[5]=a[6],a[6]=a[7],a[7]=a[8],这样子a[5]这个元素的内容就会被全部抹杀掉了。。。。

不过这里存在一个问题,你一个结构体数组前移的时候,如何判断有多少个元素要前移呢。。。。

所以我的做法是在结构体里面定义一个标示符int flag。。。。

当对这个结构体数组元素赋值时,如a[10].name="KING" 时,那么就是说下标值为10的元素是存在的,赋完值后,来个a[10].flag=1 来标记一下。。。。

这样做的话,我们可以进行这样的删除操作了,如删除下标值为5的元素——

int i=5

for(int j=i+1a[j].flag==1i++,j++)

{

a[i]=a[j]

/* 结构体数组可以直接这样子做,它会自动把a[i]里面的变量等于a[j]里面对应的变量 */

}

a[i].flag=0

/* 如果你里面原来有10个元素,那么删除了其中一个,那就剩下9个,a[9]那个位置应该为空,一一把里面的元素清空太麻烦,直接把它的标示符flag等于0,就表示该位置为空的 */