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