新聞中心
怎么用C語(yǔ)言編寫(xiě)一個(gè)刪除函數(shù)刪除信息啊
樓上兩位說(shuō)的free只適用于鏈表
成都創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的張家口網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
如果用數(shù)組 free不行
你可以用覆蓋的方法來(lái)刪除信息 用一條其他新賦值給要被刪除的信息
比如a,b都是結(jié)構(gòu)體變量 要?jiǎng)h除a可以這樣 a=b;
c語(yǔ)言刪除結(jié)構(gòu)體中的某一元素
額。。。我看看。。。
//pil[n] 首先這個(gè)數(shù)組沒(méi)有定義。。。。你先看看,是用它來(lái)記錄文件信息的。。。你定義的應(yīng)該是個(gè)全局變量吧??
void dele_name()
{ FILE *fp;
int i,j,n;
char name[10];
if((fp=fopen("pil","rb"))==NULL){printf("不能打開(kāi)pil文件\n"); exit(1);}
printf("刪除前\n");
printf("記錄號(hào): 入住時(shí)間 房間號(hào) 姓名 性別 床位數(shù) 費(fèi)用 身份證號(hào)Enter\n");
//將所有的信息“ 都 “寫(xiě)入了pil[n] 數(shù)組;都寫(xiě)入了你看到?jīng)]??
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("要?jiǎng)h除的旅客姓名:");scanf("%s",name);
//額。。。。這個(gè)for的空循環(huán),通過(guò)strcmp(pil[i].name,name來(lái)尋找
//要?jiǎng)h除的人的信息;如果找到了,就退出,但是此時(shí)記錄了該項(xiàng)在pil[n]的下標(biāo)值,即就是該元組是文件里的第 i 項(xiàng);是個(gè)關(guān)鍵;
for(i=0;(strcmp(pil[i].name,name)!=0in);i++)
fclose(fp);
//這里思想很簡(jiǎn)單,就是把 前 0 ~ (i-1)項(xiàng) 和 (i +1)~最后一項(xiàng) 重新寫(xiě)入文件。。。相當(dāng)于刪除了第 i 項(xiàng)。。。
fp=fopen("pil","w+"); //以 “W+"方式打開(kāi),你看看規(guī)則,
//好像是清除了文件里的信息了吧。。這個(gè)不是很清除,不過(guò)就邏輯來(lái)看,應(yīng)該就是這樣的了。。。
for(j=0;ji;j++)
fwrite(pil[j],sizeof(struct pilot),1,fp);
for(j=i+1;jn;j++)
fwrite(pil[j],sizeof(struct pilot),1,fp);
fseek(fp,0,SEEK_SET);
if(in)
printf("刪除成功!");
else
//額。。。這里說(shuō)一下,你這個(gè) 判斷應(yīng)該放在上邊我覺(jué)得。。。因?yàn)槿绻麤](méi)找到這個(gè)人,那么你應(yīng)該直接退出,而不是將文件重新寫(xiě)一遍。。浪費(fèi)時(shí)間了。。。
printf("沒(méi)有此人!");
fclose(fp);
}
c語(yǔ)言怎么在結(jié)構(gòu)體里面,做一個(gè)清空數(shù)據(jù)的函數(shù),用結(jié)構(gòu)體創(chuàng)建的全局變量,每次調(diào)用都會(huì)有數(shù)據(jù)殘留在里面
struct?stTest
{
int?a;
int?b;??
};
stTest?a;
memset(a,?0,?sizeof(a)?);??//從a地址開(kāi)始清空?sizeof(a)大小的內(nèi)存
row_num--;A->col_num--;這兩句代碼出錯(cuò)'>C語(yǔ)言刪除矩陣某一列函數(shù),結(jié)構(gòu)體指針問(wèn)題,A->row_num--;A->col_num--;這兩句代碼出錯(cuò)
刪除列的算法錯(cuò)了,應(yīng)該緊縮數(shù)據(jù)把數(shù)據(jù)按每行col_num數(shù)據(jù)前移,把空出來(lái)的空間放在最后這樣計(jì)算位置就不會(huì)出錯(cuò)了否則總列數(shù)并沒(méi)變,你那個(gè)col_num--就會(huì)出問(wèn)題了。行數(shù)當(dāng)然維持不變了!
本文名稱:c語(yǔ)言結(jié)構(gòu)體刪除函數(shù)編譯 c語(yǔ)言中的刪除
瀏覽地址:http://www.dlmjj.cn/article/dodpjcs.html