void del()
成都服務(wù)器托管,成都創(chuàng)新互聯(lián)提供包括服務(wù)器租用、服務(wù)器機(jī)柜租賃、帶寬租用、云主機(jī)、機(jī)柜租用、主機(jī)租用托管、CDN網(wǎng)站加速、空間域名等業(yè)務(wù)的一體化完整服務(wù)。電話咨詢:028-86922220
{
STU a[20]; char tname[20];
int i=0,j,n=0;
FILE *fp;
printf("\t\t\t請(qǐng)輸入要?jiǎng)h除的姓名:");
scanf("%s",tname);
/*****以下內(nèi)容是讀取文件信息,并將文件中的信息與用戶輸入的姓名做比較,如果姓名相同,則刪除該學(xué)生信息***/
if((fp=fopen("e:\\file1","rb"))==NULL) //打開(kāi)文件file1
{printf("error!\n");exit(0);} //打開(kāi)失敗,報(bào)錯(cuò)并退出系統(tǒng)
while(fread(a[n],sizeof(STU),1,fp)!=0) //打開(kāi)成功,每次從文件中讀入一個(gè)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) //找完一遍,沒(méi)找到
{ printf("\t\t\t沒(méi)有找到!\n");
fclose(fp); //關(guān)閉文件file1
}
else //找到了同姓名的學(xué)生
{
/**該循環(huán)用于刪除該學(xué)生信息**/
for(j=i;jn-1;j++) //從找到該學(xué)生的位置開(kāi)始,依次把后面的數(shù)據(jù)前移,覆蓋掉前一個(gè)
{
a[j]=a[j+1];
}
n=n-1; //學(xué)生總數(shù)減1
/****以下內(nèi)容是更新文件,并提示用戶刪除成功****/
if((fp=fopen("e:\\file1","wb"))==NULL) //再次打開(kāi)文件file1,把刪除之后的信息保存到文件中
{printf("error!\n");exit(0);}
fwrite(a,sizeof(STU),n,fp); //每次往文件中寫入一個(gè)學(xué)生的信息(即一個(gè)STU大小)
fclose(fp);
printf("\t\t\t刪除成功!\n");
system("pause"); //頁(yè)面顯示諸如“按任意鍵繼續(xù)……”
}
}
有幾個(gè)辦法:
初始化部分全部放在開(kāi)頭,一塊兒,手動(dòng)初始化,注意不要采用int i=0;這種定義加初始化形式。
方法1、在需要的地方goto回去
方法2、用花括號(hào)把整個(gè)程序包起來(lái),do,while語(yǔ)句,類似于這樣
do{
初始化部分
flag=1;
p=(char *)malloc(sizeof(char)*10);
......
執(zhí)行部分
......
}while((scanf("%d",flag) != EOF));
clscr() 函數(shù), 屬于 stdlib.h
不過(guò),clscr()只在TC里有,其它的編譯器中不支持。VC++里用system("cls")代替。 都可以清屏
字符串函數(shù)string.h
在頭文件string.h中定義了兩組字符串函數(shù)。第一組函數(shù)的名字以str開(kāi)頭;第二組函數(shù)的名字以mem開(kāi)頭。只有函數(shù)memmove對(duì)重疊對(duì)象間的拷貝進(jìn)行了定義,而其他函數(shù)都未定義。比較類函數(shù)將其變量視為unsigned char類型的數(shù)組。
1.strcpy
#include string.h
char *strcpy(char *str1, const char *str2);
把字符串str2(包括'\0')拷貝到字符串str1當(dāng)中,并返回str1。
2. strncpy
#include string.h
char *strncpy(char *str1, const char *str2, size_t count);
把字符串str2中最多count個(gè)字符拷貝到字符串str1中,并返回str1。如果str2中少于count個(gè)字符,那么就用'\0'來(lái)填充,直到滿足count個(gè)字符為止。
3.strcat
#include string.h
char *strcat(char *str1, const char *str2);
把str2(包括'\0')拷貝到str1的尾部(連接),并返回str1。其中終止原str1的'\0'被str2的第一個(gè)字符覆蓋。
4.strncat
#include string.h
char *strncat(char *str1, const char *str2, size_t count);
把str2中最多count個(gè)字符連接到str1的尾部,并以'\0'終止str1,返回str1。其中終止原str1的'\0'被str2的第一個(gè)字符覆蓋。
注意,最大拷貝字符數(shù)是count+1。
5.strcmp
#include string.h
int strcmp(const char *str1, const char *str2);
按字典順序比較兩個(gè)字符串,返回整數(shù)值的意義如下:
小于0,str1小于str2;
等于0,str1等于str2;
大于0,str1大于str2;
6 strncmp
#include string.h
int strncmp(const char *str1, const char *str2, size_t count);
同strcmp,除了最多比較count個(gè)字符。根據(jù)比較結(jié)果返回的整數(shù)值如下:
小于0,str1小于str2;
等于0,str1等于str2;
大于0,str1大于str2;
7 strchr
#include string.h
char *strchr(const char *str, int ch);
返回指向字符串str中字符ch第一次出現(xiàn)的位置的指針,如果str中不包含ch,則返回NULL。
8 strrchr
#include string.h
char *strrchr(const char *str, int ch);
返回指向字符串str中字符ch最后一次出現(xiàn)的位置的指針,如果str中不包含ch,則返回NULL。
9 strspn
#include string.h
size_t strspn(const char *str1, const char *str2);
返回字符串str1中由字符串str2中字符構(gòu)成的第一個(gè)子串的長(zhǎng)度。
10 strcspn
#include string.h
size_t strcspn(const char *str1, const char *str2);
返回字符串str1中由不在字符串str2中字符構(gòu)成的第一個(gè)子串的長(zhǎng)度。
11 strpbrk
#include string.h
char *strpbrk(const char *str1, const char *str2);
返回指向字符串str2中的任意字符第一次出現(xiàn)在字符串str1中的位置的指針;如果str1中沒(méi)有與str2相同的字符,那么返回NULL。
12 strstr
#include string.h
char *strstr(const char *str1, const char *str2);
返回指向字符串str2第一次出現(xiàn)在字符串str1中的位置的指針;如果str1中不包含str2,則返回NULL。
13 strlen
#include string.h
size_t strlen(const char *str);
返回字符串str的長(zhǎng)度,'\0'不算在內(nèi)。
14 strerror
#include string.h
char *strerror(int errnum);
返回指向與錯(cuò)誤序號(hào)errnum對(duì)應(yīng)的錯(cuò)誤信息字符串的指針(錯(cuò)誤信息的具體內(nèi)容依賴于實(shí)現(xiàn))。
15 strtok
#include string.h
char *strtok(char *str1, const char *str2);
在str1中搜索由str2中的分界符界定的單詞。
對(duì)strtok()的一系列調(diào)用將把字符串str1分成許多單詞,這些單詞以str2中的字符為分界符。第一次調(diào)用時(shí)str1非空,它搜索str1,找出由非str2中的字符組成的第一個(gè)單詞,將str1中的下一個(gè)字符替換為'\0',并返回指向單詞的指針。
隨后的每次strtok()調(diào)用(參數(shù)str1用NULL代替),均從前一次結(jié)束的位置之后開(kāi)始,返回下一個(gè)由非str2中的字符組成的單詞。當(dāng)str1中沒(méi)有這樣的單詞時(shí)返回NULL。每次調(diào)用時(shí)字符串str2可以不同。
如:
char *p;
p = strtok("The summer soldier,the sunshine patriot", " ");
printf("%s", p);
do {
p = strtok("\0", ", "); /* 此處str2是逗號(hào)和空格 */
if (p)
printf("|%s", p)
} while (p);
顯示結(jié)果是:The | summer | soldier | the | sunshine | patriot
網(wǎng)站標(biāo)題:c語(yǔ)言清除函數(shù)運(yùn)行數(shù)據(jù)庫(kù) c語(yǔ)言清除文件中數(shù)據(jù)
當(dāng)前URL:http://chinadenli.net/article40/dogdjeo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、網(wǎng)站制作、響應(yīng)式網(wǎng)站、面包屑導(dǎo)航、網(wǎng)站建設(shè)、動(dòng)態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)