FILE *fp;
fp = fopen("test.txt", "r"); //以讀的形式打開(kāi)文本文件
if (fp == NULL)
{exit(0);
}
文本文件
r 只讀 r+ 讀寫(xiě)
w 只寫(xiě) w+ 讀寫(xiě)
a+ 讀寫(xiě)尾部添加
二進(jìn)制文件
rb 只讀 rb+ 讀寫(xiě)
wb 只寫(xiě) wb+ 讀寫(xiě)
ab 尾部添加 ab+ 讀寫(xiě)尾部添加
fclose(fp);
char ch;
//寫(xiě) - fputc()
ch = getchar();
while ( ch != '$' )
{fputc(ch,fp); //把ch變量的字符值寫(xiě)往文件
ch = getchar();
}
//讀 -fgetc()
ch = fgetc(fp); //從文件里讀取一個(gè)字符
while ( ch != EOF ) //判斷文件是否讀完,未完,則繼續(xù)執(zhí)行讀操作
{putchar(ch); //將字符送到屏幕
ch = fgetc(fp);
}
putchar(10); //換行
//讀 - fgets()
char ch[41], *cp;
cp = fgets(ch, 41, fp); //從文件中讀取一行字符串,不得超過(guò)40字節(jié)(還有一個(gè)字節(jié)是'\0')
while ( cp != NULL )
{printf("%s", ch);
cp = fgets(ch, 40, fp);
}
//寫(xiě) - fputs()
char ch[5][41], *cp;
int i;
for ( i = 0; i< 0; i++ )
{gets(ch[i]); //將一個(gè)字符串放到數(shù)組中
}
for ( i = 0; i< 5; i++ )
{fputs(ch[i], fp); //將一個(gè)字符串寫(xiě)往文件
fputs("\n", fp); //在文本文件中換行
}
fscanf() 把從文本文件中讀出的字符串按指定的格式轉(zhuǎn)換為相應(yīng)類型變量的值(不只是字符型)
fprintf() 把變量的值按指定的方式轉(zhuǎn)化為文本寫(xiě)往文本文件
fscanf(文本指針,格式控制字符串,輸入項(xiàng)的地址列表);
其返回值是事實(shí)上已賦值的變量的個(gè)數(shù),如果未進(jìn)行分配,則返回EOF
fprintf(文本指針,格式控制字符串,輸入項(xiàng)的列表);
其返回值是正確寫(xiě)入文件的字節(jié)數(shù),否則返回負(fù)數(shù)
int main(void)
{char name[9];
FILE *fp;
int age, i, num=0;
float score;
fp = fopen("student.txt", "w"); //以寫(xiě)的形式打開(kāi)文件
if ( fp == NULL )
exit(0);
for ( i = 0; i< 3; i++ )
{printf("請(qǐng)輸入學(xué)生_%d的姓名,年齡,成績(jī):", i+1);
scanf("%s%d%f", name, &age, &score);
fprintf(fp, "%s %4d %6.2f\n", name, age, score); //將變量數(shù)據(jù)寫(xiě)往文件
}
fclose(fp);
fp = fopen("student.txt", "r"); //以讀的形式打開(kāi)文件
printf("從文件中讀出的學(xué)生數(shù)據(jù):\n");
i = fscanf(fp, "%s%d%f", name, &age, &score); //利用scanf的返回值來(lái)判斷讀是否成功
while ( i == 3 )
{printf("學(xué)生_%d的姓名,年齡,成績(jī):", ++num);
printf("%s %4d %6.2f\n", name, age, score); //將數(shù)據(jù)打印到屏幕上
i = fscanf(fp, "%s%d%f", name, &age, &score);
}
fclose(fp);
return 0;
}
數(shù)據(jù)塊讀寫(xiě)文件在讀寫(xiě)過(guò)程中不對(duì)數(shù)據(jù)進(jìn)行轉(zhuǎn)換,直接在內(nèi)存與文件之間進(jìn)行數(shù)據(jù)拷貝;
讀寫(xiě)過(guò)程中不需考慮數(shù)據(jù)的性質(zhì)和類型,只是簡(jiǎn)單對(duì)存儲(chǔ)空間進(jìn)行復(fù)制
fread(buffer,size,count,fp);
fwrite(buffer,size,count,fp);
buffer:對(duì)應(yīng)一個(gè)連續(xù)內(nèi)存數(shù)據(jù)區(qū)的起始地址,通常是一個(gè)指針值
size:欲復(fù)制的一個(gè)數(shù)據(jù)塊的大小(字節(jié)數(shù))
count:本次欲復(fù)制多少個(gè)數(shù)據(jù)塊
fp:指向讀寫(xiě)文件的文件指針
int feof(FILE *fp)
用于在進(jìn)行讀文件時(shí),檢測(cè)是否讀寫(xiě)文件所有數(shù)據(jù),如果文件結(jié)束,則返回非0值,反之返回0
while (!feof(fp)) {}
int main(void)
{FILE *fp1, *fp2;
char data;
fp1 = fopen("stu.txt", "rb");
fp2 = fopen("stu_copy.txt", "wb");
if ( fp1 == NULL || fp2 == NULL )
exit(0);
fread(&data, sizeof(char), 1, fp1); //讀一個(gè)字節(jié)的內(nèi)容給變量data
while ( !feof(fp1) )
{fwrite(&data, sizeof(char), 1, fp2); //將data的內(nèi)容寫(xiě)到fp2
fread(&data, sizeof(char), 1, fp1);
}
fclose(fp1);
fclose(fp2);
return 0;
}
fseek(),可以將文件位置指針移動(dòng)到指定的位置
int fseek(FILE *fp,long 位移量, int 起始點(diǎn));
起始點(diǎn)參數(shù):0 文件開(kāi)始位置; 1 文件當(dāng)前位置; 2 文件末尾位置
位移量: 值為正時(shí),指針向后移動(dòng);值為負(fù)時(shí),指針向前移動(dòng);若是long型,則100L
rewind(FILE *fp) 是使文件的文件位置指針重新指向文件開(kāi)始的位置
fflush(stdin); 清空輸入緩存區(qū),保證下面的scanf()讀新的循環(huán)條件
ftell(FILE *fp) 用于獲取文件位置指針當(dāng)前值
ferror(FILE *fp) 用于測(cè)試給定文件指針指向的文件信息區(qū)的錯(cuò)誤標(biāo)識(shí)符
cleareer(FILE *fp) 使文件錯(cuò)誤標(biāo)志和文件結(jié)束標(biāo)志置為0
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
創(chuàng)新互聯(lián)長(zhǎng)期為上千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為通遼企業(yè)提供專業(yè)的網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì),通遼網(wǎng)站改版等技術(shù)服務(wù)。擁有十余年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。
標(biāo)題名稱:【C語(yǔ)言】文件的基本讀寫(xiě)操作等-創(chuàng)新互聯(lián)
文章分享:http://m.rwnh.cn/article42/cechec.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營(yíng)銷型網(wǎng)站建設(shè)、品牌網(wǎng)站設(shè)計(jì)、網(wǎng)站維護(hù)、網(wǎng)站設(shè)計(jì)、動(dòng)態(tài)網(wǎng)站、自適應(yīng)網(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)
猜你還喜歡下面的內(nèi)容