void delete_student(student *L,long studentnum)
創新互聯專注為客戶提供全方位的互聯網綜合服務,包含不限于成都做網站、成都網站設計、芝罘網絡推廣、重慶小程序開發、芝罘網絡營銷、芝罘企業策劃、芝罘品牌公關、搜索引擎seo、人物專訪、企業宣傳片、企業代運營等,從售前售中售后,我們都將竭誠為您服務,您的肯定,是我們最大的嘉獎;創新互聯為所有大學生創業者提供芝罘建站搭建服務,24小時服務熱線:18980820575,官方網址:vcdvsql.cn
{
int flag = 0;
student * p = L,*q = p-next;
while(q)
{
if(q-number == studentnum)
{
flag = 1;
q = q-next;
break;
}
else
{
p = q;
q = q-next; /*下一個結點*/
}
}
if(flag == 0)
printf("刪除學生失敗,不存在這個學號的學生\n");
else{
printf("刪除學生成功! \n ");
}
}
1. 函數開始的時候這兩句話沒有意義
p=(stud *)malloc(sizeof(stud));
q=(stud *)malloc(sizeof(stud));
你只是用了這兩個指針,為它們分配空間一是沒必要,二是內存會泄露
2. 看你的代碼應該是有頭結點的鏈表,搜索的時候p=head;p初始化為了head,指向了頭結點,搜索的時候應該從p-next開始,而你用的while((p!=NULL)(strcmp(p-name,N)!=0)),應該用p-next!=NULL。而且后面刪除的時候也刪除的是p-next,所以比較的話也應該用p-next:strcmp(p-next-name,N)
首先要說明的是這里并不是指刪除C編譯器里面的文件,呵呵,如果只是要刪除那些文件的話,那就很簡單,直接選中文件后按delete鍵就可以刪除了,但是我們刪除那些文件干嘛?我們還要用它寫程序啊,呵呵。我在這里要說的是,怎樣使用C語言編寫程序來刪除文件。
在C語言中,我們可以使用remove()函數來刪除指定的文件,具體語法為:
Int remove(char *filename);其中filename是一個指向字符串的指針,該字符串可以組成有效的文件名,也可以包含路徑說明。如果我們要刪除D盤下的ABC.txt文件,我們就可以這樣寫:remove(“D:\ABC.txt”);
樓主的意思是在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]);
}
}
一般呢,插入和刪除函數是分開寫的,還有分成兩種存儲結構,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-1 LinkLength(L))
return 2;
while(p1!=NULL ji-1)
{
p1 = p1-next;
j++;
}
p2 = (LNode *)malloc(sizeof(LNode));
if (!p2)
return 0;
p2-data = 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("%5d", 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 != NULL j i - 1)
{
p1 = p1-next;
j++;
}
if (p1-next == NULL || j i - 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;
}
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語言刪除函數是,C語言中刪除
文章路徑:http://vcdvsql.cn/article36/hspipg.html
成都網站建設公司_創新互聯,為您提供網站內鏈、搜索引擎優化、品牌網站建設、靜態網站、網站建設、ChatGPT
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯