C语言中如何删除数组中的一个元素

tom555cat 2012-01-22 04:20:51
比如一个int类型的数组,要删除最后一个元素,该怎么做
...全文
29016 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2014-08-06
  • 打赏
  • 举报
回复
喏,大概就是这样: void delete (char s[],int c){ int i, j; for(i=j=0; s[i]!='\0'; ++i){ if(s[i] != c){ s[j++]=s[i]; } } s[j]='\0'; }
wizard_tiger 2012-01-30
  • 打赏
  • 举报
回复
LS都说了,学习一下。
IVERS0N 2012-01-29
  • 打赏
  • 举报
回复
数组没什么所谓删除啊

重新定义一个新数组 除最后一个都赋值过去咯
zwd_125 2012-01-29
  • 打赏
  • 举报
回复
将要删除元素之后的元素全部前移一个元素就可以了。。。
zwd_125 2012-01-29
  • 打赏
  • 举报
回复
将要删除元素后面的元素全部前移一次就可以了
Ever_lover 2012-01-29
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 anyidan 的回复:]

建立新数组,copy 除最后一个元素的所有元素
[/Quote]
正解 ,重新建立一个数组把需要的直接赋值过去就ok了
li08240418 2012-01-29
  • 打赏
  • 举报
回复
遍历啊
Defonds 2012-01-29
  • 打赏
  • 举报
回复
遍历,删除
小班得瑞 2012-01-28
  • 打赏
  • 举报
回复
动态分配数组是最直截了当的方法,我个人觉得如果不对该元素进行访问能满足要求,也可以吧,呵呵
8毛_ 2012-01-28
  • 打赏
  • 举报
回复
采用C语言里面的动态分配!
重新分配数组大小就可以删除最后的元素!
qpalz1 2012-01-28
  • 打赏
  • 举报
回复
#include <string.h>
#include <stdio.h>
#include <stdlib.h>

int main()
{
size_t len = 3; //length of the array
int * a = calloc(len, sizeof(int));
for (int i = 0; i < len; i++)
{
a[i] = i + 1;
}
int pos = 1; //the pos of the element you want to delete
memmove(a + pos, a + pos + 1, len - pos - 1);
a = (int*)realloc(a, len - 1);
for (int i = 0; i < len - 1; i++)
{
printf("%d\n", a[i]);
}
}
Naugineer 2012-01-28
  • 打赏
  • 举报
回复
1,C 语言不像其他高级语言(比如VB),没有动态数组的概念,所有的数组一旦定义,就不可以改变他的大小。
2,正如楼上说的,数组的内存管理基本可以根据他的数据生命周期,自动的动态分布。
3,如果楼主想手动的分布的话,可以使用指针(而非数组)结合C语言的动态存储分配函数完成: malloc , calloc,free。来分配和收回内存。
希望对你有所帮助。
foxpeter 2012-01-28
  • 打赏
  • 举报
回复 1
1楼的办法只有删除最后一个元素好用

通用的办法还是重新复制一次 只保留需要的元素就行了

如果有大量的增加和删除操作 还是用链表吧
Still_Raining 2012-01-27
  • 打赏
  • 举报
回复
1楼正解
hp20091023 2012-01-25
  • 打赏
  • 举报
回复
又有收获
caddor 2012-01-25
  • 打赏
  • 举报
回复
5 6楼的答案

只有重新分配内存 ,copy
程序员小迷 2012-01-25
  • 打赏
  • 举报
回复
你要实现什么效果?
cailineng 2012-01-23
  • 打赏
  • 举报
回复
建立两个数组就可以了
cuijingchun23 2012-01-23
  • 打赏
  • 举报
回复
第一个到倒数第二个的
用 temp = a[2] a[2]=a[3] a[3]=a[0] 到/0 temp已删除
最后的用方法:
用5楼, strcpy(a[],b[])char * strcpy(char * strDest,const char * strSrc);
TPOF314 2012-01-22
  • 打赏
  • 举报
回复
楼上正解。
如果数组是用malloc建立的话,重新建立一个,copy所有元素。然后把指针指向新数组,原来的数组free掉。
加载更多回复(5)

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧