c语言删除结构体
㈠ c语言程序,怎么在结构体链表中插入或者删除某个结构体
没学过数据结构?那你们老师在干嘛?数据结构不应该是和语言同步进行的吗?
struct A //这就是个结构体,包含数据域和指针域
{
int a;//数据域,可以是任何类百型的。
char b;//数据域
A *p;//指针域,就是struct A类型。
};链表,一般是动态的。你要静态的就不用malloc分配就行了。定义N个struct
A就行了。
struct A a1;
struct A a2;
struct A a3;
struct A a4;
//a1作为第一个节点
a1->next = a2;
a2->next = a3;
a3->next = a4;
a4->next = NULL;
//插入,在a2后面插入a5
struct A a5;
a5->next = a2->next;
a2->next = a5;//注意指针的赋值顺序。虽然全部是度静态的问题不大。动态分配的时候不仔细会造成断链,内存溢出。
//删除a5
a2->next = a5->next;//静态不存在释放的问题,动态申请的请释放a5;
㈡ 在C语言中,怎么删除一个结构体数组中的数据
满意答案null6级2010-12-10你是想单纯的删除 ,还是注销这个结构体的这一项啊 追问: 把结构体中存的所有数据删除 回答: 要是是int型的我们一般把它等于0要是是指针型的一般是把他指向空指针NULLstruct A{int a;char *b;}dd;main(){dd.a=0; dd.b==NULL;}可是这么做好像没事意思,你能告诉我你是想干嘛吗 追问: 学生信息管理系统中有一个结构体数组,存有学生姓名char(20),学号int,等信息,要实现该程序的全部删除功能 回答: 那可以像上面我教的的那样,其实就是用0和NULL把原来的值给覆盖了,原来的数据自然就没有了,也就是实现了你的删除的目的!
㈢ C语言中如何销毁结构体变量
C语言没有销毁变量的举措,所以不能由程序员用什么语句来销毁结构体变量。和其他基本变量一样,全局结构体变量、static修饰的结构体变量的寿命都与程序的寿命一样长,无法改变;而声明在函数中的自动(auto)结构体变量,在函数被调用时创建,函数退出时自动销毁!
㈣ c语言删除结构体中的某一元素
额。。。我看看。。。
//pil[n] 首先这个数组没有定义。。。。你先看看,是用它来记录文件信息的。。。你定义的应该是个全局变量吧??
void dele_name()
{ FILE *fp;
int i,j,n;
char name[10];
if((fp=fopen("pil","rb"))==NULL){printf("不能打开pil文件\n"); exit(1);}
printf("删除前\n");
printf("记录号: 入住时间 房间号 姓名 性别 床位数 费用 身份证号<Enter>\n");
//将所有的信息“ 都 “写入了pil[n] 数组;都写入了你看到没??
for(n=0;fread(&pil[n],sizeof(struct pilot),1,fp);n++)
printf("%6d%10s%7s%7s%7s%7d%9d%20s\n",n+1,pil[n].time,pil[n].no,pil[n].name,
pil[n].sex,pil[n].shu,pil[n].money,pil[n].id);
printf("要删除的旅客姓名:");scanf("%s",name);
//额。。。。这个for的空循环,通过strcmp(pil[i].name,name来寻找
//要删除的人的信息;如果找到了,就退出,但是此时记录了该项在pil[n]的下标值,即就是该元组是文件里的第 i 项;是个关键;
for(i=0;(strcmp(pil[i].name,name)!=0&&i<n);i++)
fclose(fp);
//这里思想很简单,就是把 前 0 ~ (i-1)项 和 (i +1)~最后一项 重新写入文件。。。相当于删除了第 i 项。。。
fp=fopen("pil","w+"); //以 “W+"方式打开,你看看规则,
//好像是清除了文件里的信息了吧。。这个不是很清除,不过就逻辑来看,应该就是这样的了。。。
for(j=0;j<i;j++)
fwrite(&pil[j],sizeof(struct pilot),1,fp);
for(j=i+1;j<n;j++)
fwrite(&pil[j],sizeof(struct pilot),1,fp);
fseek(fp,0,SEEK_SET);
if(i<n)
printf("删除成功!");
else
//额。。。这里说一下,你这个 判断应该放在上边我觉得。。。因为如果没找到这个人,那么你应该直接退出,而不是将文件重新写一遍。。浪费时间了。。。
printf("没有此人!");
fclose(fp);
}
㈤ C语言结构体函数 实现 添加 删除 修改
网上搜一下,建立链表,添加,删除,修改的相关操作
㈥ c语言中如何删除结构体数组中的一个值
结构体同样可以看做一个基本数据类型。
删除结构体数组中的一个值,就像删除一个普通数组中的值一样的。
普通数组的删除是将后面的数据向前移动,达到覆盖掉的效果
比如:a[4]要删除第二个元素。那么把a[1] = a[2];a[2] = a[3];
最后一个不要动,也最好别去访问它,就相当于把第二个元素删除了。
结构体跟上面类似,但是结构体是你自定义的数据,所以在定义中,你要给它重载赋值符号(也就是=),要不然赋值的过程中会出错
㈦ C语言。怎么删除结构体里的某个成员,就是增删改查里的删我只学到结构体。
例如
struct student s[10];
想要删除s[5],只需将其之后的元素依次往前移将前一个元素覆盖就好了,然后最后一个元素不用就行了!
㈧ C语言结构体文件内容的删除以及排序
恐怕要将文件中所有数据读取到内存,
再查找和删除内容,
再写会文件
㈨ C语言里如何清空结构体内的数据
memset((char*)&test,0,sizeof(test));试试。我是这么做的·。 补充: 或许是for(i=o;i<10;i++)memset((char*)&test[i],0,sizeof(test[i]));//里面的i是你想要清空的那个变量 追问: 能详细讲解一下这两个地方吗(char*)&test \sizeof(test) 回答: 函数原型:memset(void *, int, size_t);(char*)&test 是第一个参数,表示test结构体的首地址&test强制转化为char型的。sizeof(test)是计算test结构体的大小0表示清空。 追问: sizeof()里面的结构体可以用结构体指针代替吗? 回答: 应该不行·。sizeof()括号里是数据类型,所以貌似我上面写错。应该是memset((char*)&test1[i],0,sizeof(test)); 追问: 好像我用指针也通过了,........竟然没报错,而且数据也确实清空了
㈩ C语言 结构体元素删除
#include<stdio.h>
structPeople
{
intNo;
intage;
};
intmain()
{
structPeopleStus[5]={{1,34},{2,23},{3,25},{4,28},{5,31}};
inti,id,k=0;
scanf("%d",&id);
for(i=0;i<5;i++)
{
if(id==Stus[i].No)
k=1;
if(k)
Stus[i]=Stus[i+1];
}
k=0;
for(i=0;i<4;i++)
{
printf("%d%d ",Stus[i].No,Stus[i].age);
}
return1;
}//解决请采纳