樓主的意思是在str1中刪除str2中出現(xiàn)的字符?那么改成:
創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比烏拉特后網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式烏拉特后網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋烏拉特后地區(qū)。費用合理售后完善,10年實體公司更值得信賴。
#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]);
}
}
void del()
{
STU a[20]; char tname[20];
int i=0,j,n=0;
FILE *fp;
printf("\t\t\t請輸入要刪除的姓名:");
scanf("%s",tname);
/*****以下內(nèi)容是讀取文件信息,并將文件中的信息與用戶輸入的姓名做比較,如果姓名相同,則刪除該學(xué)生信息***/
if((fp=fopen("e:\\file1","rb"))==NULL) //打開文件file1
{printf("error!\n");exit(0);} //打開失敗,報錯并退出系統(tǒng)
while(fread(a[n],sizeof(STU),1,fp)!=0) //打開成功,每次從文件中讀入一個STU結(jié)構(gòu)大小的數(shù)據(jù),并將其存入數(shù)組a[]中。直到文件內(nèi)容結(jié)束。
n++;
/**該循環(huán)用于查找**/
for(i=0;in;i++)
if(strcmp(a[i].name,tname)==0) break; //找到姓名相同的學(xué)生了,結(jié)束循環(huán)。
if(i==n) //找完一遍,沒找到
{ printf("\t\t\t沒有找到!\n");
fclose(fp); //關(guān)閉文件file1
}
else //找到了同姓名的學(xué)生
{
/**該循環(huán)用于刪除該學(xué)生信息**/
for(j=i;jn-1;j++) //從找到該學(xué)生的位置開始,依次把后面的數(shù)據(jù)前移,覆蓋掉前一個
{
a[j]=a[j+1];
}
n=n-1; //學(xué)生總數(shù)減1
/****以下內(nèi)容是更新文件,并提示用戶刪除成功****/
if((fp=fopen("e:\\file1","wb"))==NULL) //再次打開文件file1,把刪除之后的信息保存到文件中
{printf("error!\n");exit(0);}
fwrite(a,sizeof(STU),n,fp); //每次往文件中寫入一個學(xué)生的信息(即一個STU大小)
fclose(fp);
printf("\t\t\t刪除成功!\n");
system("pause"); //頁面顯示諸如“按任意鍵繼續(xù)……”
}
}
/*****************************************************************
【作者日期】test?2013-06-01
【函數(shù)功能】根據(jù)學(xué)生ID刪除學(xué)生信息
【輸入?yún)?shù)】頭結(jié)點指針
【輸出參數(shù)】頭結(jié)點指針
【函數(shù)返回】頭結(jié)點指針
【算法說明】入?yún)z查要全面及出錯信息處理要完善
【修改記錄】
*****************************************************************/
Link?*DelInfo(Link?*head)
{
//clearScreen();
Link?*tail;//
Link?*tmp;
Link?*nhead;
int?pID;
tail?=?NULL;
tmp?=?head;
nhead?=?head;
pID?=?0;
if(NULL?==?head)
{
printf("empty?link.\n");
//?WaitSys();
return?head;
}
tail?=?head-next;
printf("Please?input?the?ID(which?you?want?to?del):?\n");
scanf("%d",?pID);
getchar();
//刪除的是頭結(jié)點
if(tmp-ID?==?pID)
{
tmp?=?tmp-next;
nhead?=?tmp;
free(tmp);
if(NULL?!=?tmp)
tmp?=?NULL;
return?nhead;
}
//刪除其他位置
while(tail)
{
if(tail-ID?==?pID)
{
tmp-next?=?tail-next;
free(tail);
if(NULL?!=?tail)
tail?=?NULL;
return?nhead;
}
else
{
tmp?=?tmp-next;
tail?=?tail-next;
if(NULL?==?tail)
{
printf("你輸入的ID不存在\n");
WaitSys();
return?nhead;
}
}
}
return?nhead;
}
希望對樓主有所幫助!
struct student* del(struct student* head)
{
if (NULL == head)//如果鏈表為空,則直接返回
return head;
struct student* p, *q;
int num;
p = head;
printf("請輸入要刪除學(xué)生的學(xué)號:\n");
scanf("%d", num);//這里不需要再申請結(jié)構(gòu)體空間,直接放int變量就可以了
// 循環(huán)查找,直到找到或者鏈表結(jié)束為止
while (p != NULL p-num != num)
{
q = p;//q用來保存上一節(jié)點,再刪除當(dāng)前節(jié)點時會用到,見p!=NULL
p = p-next;
}
//while結(jié)束后,p==NULL,則表示沒有找到
//如果找到第一個p一定不為NULL,因為第一句已經(jīng)判斷,head后移一次
if (p == head)
head = head-next;//頭結(jié)點改變
else if (p != NULL)
{
q-next = p-next;//斷開要刪除的節(jié)點
p-next = NULL;
}
//如果找到,則需要釋放刪除的節(jié)點的空間,避免內(nèi)存泄露
if (p != NULL)
free(p);
return head;//由于可能改變了頭結(jié)點,所以需要返回頭結(jié)點
}
void main()
{
struct student*head;
head=create();
system("cls");
print(head);
getchar();
getchar();
head = del(head);//這里需要得到頭結(jié)點,因為頭結(jié)點可能改變了
getchar();
getchar();
system("cls");
print(head);
}
按照上面的改就沒問題了,有不懂的再問
不好意思,早上出去玩了
標(biāo)題名稱:c語言學(xué)生系統(tǒng)刪除函數(shù) c語言刪除函數(shù)怎么寫
文章分享:http://jinyejixie.com/article18/dosgjdp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊、網(wǎng)站營銷、App設(shè)計、網(wǎng)站排名、網(wǎng)頁設(shè)計公司、手機網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)