C语言的删除函数楼主的意思是在str1中删除str2中出现的字符?那么改成:
#includestdio.h
void main ()
{
char str1[9]={'t','i','n','m','f','g','y','f','s'};
char str2[3]={'A','s','g'};
int i,k,l;
for(i=0;i9;i)
{
l=0;
for(k=0;k3;k)
{
if (str1[i]=str2[k])
{l=1;break;}
}
if l!=1
printf("%c",str1[i]);
}
}
C语言编写一个插入删除函数一般呢,插入和删除函数是分开写的 , 还有分成两种存储结构,1.顺序表,2.链表 , 我给你一个我上数据结构时候写的链表的操作,里面全都有,如果不会用,追问我
#includestdio.h
#includemalloc.h
#includeWindows.h
#includeconio.h
#includestdlib.h
typedef struct
{
int data;
struct LNode *next;
}LNode;
LNode *Listinit(LNode *L)//初始化链表返还头指针
{
L = (LNode *)malloc(sizeof(LNode));
if (!L)return 0;
L-next = NULL;
return L;
}
int GetElem_L(LNode *L, int i, int *e)//取第i个元素
{
int j;
LNode *p;
p=L-next;j=1;
while(pji)
{
p=p-next;j;
}
if(!p||ji) return 0;//i超过表长
*e=p-data;
return 1;
}
int ListInsert_L(LNode *L, int i, int e)//插入数据元素
{
LNode *p1 = L,*p2=L;
int j = 0;
if (i-1LinkLength(L))
return 2;
while(p1!=NULLji-1)
{
p1 = p1-next;
j;
}
p2 = (LNode *)malloc(sizeof(LNode));
if (!p2)
return 0;
p2-data = https://www.04ip.com/post/e;
p2-next = p1-next;
p1-next = p2;
return 1;
}
void ClearList(LNode *L)//重置为空表
{
LNode *p;
while(L-next)
{
p=L-next;
L-next=p-next;
free(p);
}
}
void print_link(LNode *L)//输出函数
{
LNode *p = L;
p = p-next;
while (p != NULL)
{
printf("]", p-data);
p = p-next;
}
}
int ListDlete_L(LNode *L, int i, int *e)//删除L中I,并用e返回
{
int j = 0;
LNode *p1 = NULL, *p2 = NULL;
p1 = L;
while (p1-next != NULLji - 1)
{
p1 = p1-next;
j;
}
if (p1-next == NULL || ji - 1)
return 0;
p2 = p1-next;
p1-next = p2-next;
free(p2);
return 1;
}
int LinkLength(LNode *L)//链表的长度
{
int i = 0;
LNode *p = L-next;
while (p != NULL)
{
i;
p = p-next;
}
return i;
}
求C语言删除函数运行说明void del()
{
STU a[20]; char tname[20];
int i=0,j,n=0;
FILE *fp;
printf("\t\t\t请输入要删除的姓名:");
scanf("%s",tname);
/*****以下内容是读取文件信息,并将文件中的信息与用户输入的姓名做比较,如果姓名相同,则删除该学生信息***/
if((fp=fopen("e:\\file1","rb"))==NULL)//打开文件file1
{printf("error!\n");exit(0);}//打开失败,报错并退出系统
while(fread(a[n],sizeof(STU),1,fp)!=0)//打开成功,每次从文件中读入一个STU结构大小的数据,并将其存入数组a[]中 。直到文件内容结束 。
n;
/**该循环用于查找**/
for(i=0;in;i)
if(strcmp(a[i].name,tname)==0)break;//找到姓名相同的学生了 , 结束循环 。
if(i==n) //找完一遍,没找到
{ printf("\t\t\t没有找到!\n");
fclose(fp);//关闭文件file1
}
else//找到了同姓名的学生
{
/**该循环用于删除该学生信息**/
for(j=i;jn-1;j)//从找到该学生的位置开始,依次把后面的数据前移,覆盖掉前一个
{
a[j]=a[j 1];
}
n=n-1;//学生总数减1
/****以下内容是更新文件,并提示用户删除成功****/
if((fp=fopen("e:\\file1","wb"))==NULL)//再次打开文件file1,把删除之后的信息保存到文件中
{printf("error!\n");exit(0);}
fwrite(a,sizeof(STU),n,fp);//每次往文件中写入一个学生的信息(即一个STU大?。?
fclose(fp);
printf("\t\t\t删除成功!\n");
system("pause");//页面显示诸如“按任意键继续……”
}
}
C语言课程设计----设计数据删除函数和用电收费管理程序#includestdio.h
#includestring.h
#includectype.h
typedef struct resisdent
{
long num;
char adress[50];
char name[50];
long last_num;
long now_num;
long cost_remain;
struct resisdent *next;
}res;
void main()
{
res *enter();
res *delete(res *);
res *alter(res *);
void display(res *);
void search(res *);
res *jiaofei(res *);
res *chaobiao(res *);
int menu_select();
res *head=NULL;
res *p1,*p2,*p3;
int i,j,k;
for(;;)
{
switch(menu_select())
{
case 1:head=enter();break;
case 2:head=delete(head);break;
case 3:head=alter(head);break;
case 4:display(head);break;
case 5:search(head);break;
case 6:head=jiaofei(head);break;
case 7:head=chaobiao(head);break;
case 8:exit(0);
}
}
}
int menu_select()
{
int ch;
printf("***************Welcome to the eletronic system**********************************\n");
printf("\t1.Enter the static of the resisdent.\n");
printf("\t2.Delete the static of the resisdent.\n");
printf("\t3.Alter the static of the resisdent.\n");
printf("\t4.Display the static of the resisdent.\n");
printf("\t5.Search the static of the resisdent.\n");
printf("\t6.Hand up the cost.\n");
printf("\t7.Updata the reader.\n");
printf("\t8.Quit.\n");
printf("********************************************************************************\n");
do
{
printf("Make a chioce(1--8):");
scanf("%d",ch);
}while(ch1 || ch8);
return(ch);
}
res *enter()
{
res *head;
res *p1,*p2,*p3;
int n=0;
p1=p2=(res *) malloc (sizeof(res));
printf("Enter the static of the resisdent:\n");
printf("num:");
scanf("%ld",p1-num);
if(p1-num==0)
goto end;
printf("adress:");
scanf("%s",p1-adress);
printf("name:");
scanf("%s",p1-name);
printf("The number of last time:");
scanf("%ld",p1-last_num);
printf("The number of now:");
scanf("%ld",p1-now_num);
printf("The cost remain:");
scanf("%ld",p1-cost_remain);
while(p1-num!=0)
{
n=n 1;
if(n==1)
head=p1;
else
p2-next=p1;
p2=p1;
p1=(res *) malloc (sizeof(res));
printf("num:");
scanf("%ld",p1-num);
if(p1-num==0)
goto end;
printf("adress:");
scanf("%s",p1-adress);
printf("name:");
scanf("%s",p1-name);
printf("The number of last time:");
scanf("%ld",p1-last_num);
printf("The number of now:");
scanf("%ld",p1-now_num);
printf("The cost remain:");
scanf("%ld",p1-cost_remain);
}
end:
p2-next=NULL;
return(head);
}
res *delete(res *head)
{
res *p1,*p2;
long num;
if(head==NULL)
printf("The list is empty.!\n");
else
{
printf("Enter the num to delete:");
scanf("%ld",num);
p1=p2=head;
while(p1-num!=nump1-next!=NULL)
{
p2=p1;
p1=p1-next;
}
if(num==p1-num)
{
if(head==p1)
head=p1-next;
else
p2-next=p1-next;
}
else
printf("Not found!\n");
}
return(head);
}
res *alter(res *head)
{
res *p1,*p2;
long num;
if(head==NULL)
printf("Null list.\n");
else
{
printf("Enter the num to alter:");
scanf("%ld",num);
p1=head;
while(p1-num!=num p1-next!=NULL)
p1=p1-next;
if(num==p1-num)
{
printf("new num:");
scanf("%ld",p1-num);
printf("new adress:");
scanf("%s",p1-adress);
printf("new name:");
scanf("%s",p1-name);
printf("The number of last time:");
scanf("%ld",p1-last_num);
printf("The number of now:");
scanf("%ld",p1-now_num);
printf("The cost remain:");
scanf("%ld",p1-cost_remain);
}
else
printf("Not found!\n");
}
return(head);
}
void display(res *head)
{
res *p1,*p2;
p1=p2=head;
printf("********************************************************************************\n");
printf("\tNUM\tADRESS\tNAME\tNUMBER_LAST\tNUMBER_NOW\tCOST_REMAIN\n");
while(p1!=NULL)
{
printf("\t%-3ld\t%-6s\t%-4s\t%-11ld\t%-10ld\t%-5ld\n",p1-num,p1-adress,
p1-name,p1-last_num,p1-now_num,p1-cost_remain);
p1=p1-next;
}
printf("********************************************************************************\n");
}
void search(res *head)
{
res *p1,*p2;
char ser[50];
int n;
printf("1.search by adress.\n");
printf("2.search by name.\n");
printf("choose 1 || 2:\n");
scanf("%d",n);
if(head==NULL)
printf("NULL list.\n");
switch(n)
{
case 1:
printf("input the adress:");
scanf("%s",ser);
p1=p2=head;
while(strcmp(p1-adress,ser)!=0 p1-next!=NULL)
p1=p1-next;
if(strcmp(p1-adress,ser)==0)
{
printf("\tNUM\tADRESS\tNAME\tLAST_NUM\tNOW_NUM\tCOST_REMAIN\n");
printf("\t%-3ld\t%-6s\t%-4s\t%-11ld\t%-10ld\t%-5ld\n",p1-num,p1-adress,p1-name,
p1-last_num,p1-now_num,p1-cost_remain);
}
else
printf("Not found!\n");break;
case 2:
{
printf("input the name:");
scanf("%s",ser);
p1=p2=head;
while(strcmp(p1-name,ser)!=0p1-next!=NULL)
p1=p1-next;
if(strcmp(p1-name,ser)==0)
{
printf("\tNUM\tADRESS\tNAME\tLAST_NUM\tNOW_NUM\tCOST_REMAIN\n");
printf("\t%-3ld\t%-6s\t%-4s\t%-11ld\t%-10ld\t%-5ld\n",p1-num,p1-adress,p1-name,
p1-last_num,p1-now_num,p1-cost_remain);
}
else
printf("Not found!\n");break;
}
default:break;
}
}
res *jiaofei(res *head)
{
res *p1,*p2;
char adress[50];
long cost;
printf("input the adress:");
scanf("%s",adress);
if(head==NULL)
printf("NULL list!\n");
else
{
p1=head;
while(strcmp(p1-adress,adress)!=0p1-next!=NULL)
p1=p1-next;
if(strcmp(p1-adress,adress)==0)
{
printf("input the number of the cost:");
scanf("%ld",cost);
p1-cost_remain =cost;
}
else
printf("Not found!\n");
}
return(head);
}
res *chaobiao(res *head)
{
res *p1,*p2;
char adress[50];
if(head==NULL)
printf("NULL list!\n");
else
{
printf("input the adress:");
scanf("%s",adress);
p1=head;
while(strcmp(p1-adress,adress)!=0p1-next!=NULL)
p1=p1-next;
if(strcmp(p1-adress,adress)==0)
{
p1-last_num=p1-now_num;
printf("input the num:");
scanf("%ld",p1-now_num);
}
else
printf("Not found!\n");
}
return(head);
}
总算做出来了,总体功能是可以的,我调试过了,只是在输入编号时 , 只要输入0就会结束 , 另外,对名字,编号等的长度我都作了限制,当时是为了方便我的习惯,你可以改一下,应该会吧!
我也比较菜,程序在容错方面还是有缺陷的,例如,当输入俩同样的地址 , 俩同样的名字的时候 , 你去查找的时候,只可以打出第一个 。
有问题你可以反馈回来,我也在学c,在找东西练手呢!
求大神,关于c语言删除函数1. 函数开始c语言课设删除函数的时候这两句话没有意义
p=(stud *)malloc(sizeof(stud));
q=(stud *)malloc(sizeof(stud));
你只是用c语言课设删除函数了这两个指针,为它们分配空间一是没必要,二是内存会泄露
2. 看你c语言课设删除函数的代码应该是有头结点的链表,搜索的时候p=head;p初始化为c语言课设删除函数了head,指向c语言课设删除函数了头结点,搜索的时候应该从p-next开始,而你用的while((p!=NULL)(strcmp(p-name,N)!=0)),应该用p-next!=NULL 。而且后面删除的时候也删除的是p-next,所以比较的话也应该用p-next:strcmp(p-next-name,N)
【c语言课设删除函数 c语言删除函数怎么写】关于c语言课设删除函数和c语言删除函数怎么写的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。
推荐阅读
- 手机桌面怎么变成游戏,手机如何把游戏图标改掉
- js回滚其他事件,js怎么返回上一步
- 什么软件存视频,什么软件存视频不压缩画质
- 什么是免费编辑视频赚钱,什么是免费编辑视频赚钱软件
- 天堂1服务器,国服天堂1什么时候开怀旧服
- linux链接命令行 linux命令行连网
- java显示视频代码,java 视频编码
- asp.netmvc脚本注入,aspnet mvc4
- php游戏数据处理 php游戏开发教程