c語言中的文件讀寫函數(shù),c語言中的文件讀寫函數(shù)是什么

用C語言的函數(shù)創(chuàng)建、打開和讀寫文件

#include?stdio.h

員工經(jīng)過長(zhǎng)期磨合與沉淀,具備了協(xié)作精神,得以通過團(tuán)隊(duì)的力量開發(fā)出優(yōu)質(zhì)的產(chǎn)品。創(chuàng)新互聯(lián)公司堅(jiān)持“專注、創(chuàng)新、易用”的產(chǎn)品理念,因?yàn)椤皩W⑺詫I(yè)、創(chuàng)新互聯(lián)網(wǎng)站所以易用所以簡(jiǎn)單”。公司專注于為企業(yè)提供成都網(wǎng)站建設(shè)、網(wǎng)站制作、微信公眾號(hào)開發(fā)、電商網(wǎng)站開發(fā),小程序開發(fā),軟件按需策劃等一站式互聯(lián)網(wǎng)企業(yè)服務(wù)。

void?main(int?argc,char?*argv[])?//命令行參數(shù)

{

int?ch;//定義文件類型指針

FILE?*fp;//判斷命令行是否正確

if(argc!=2)

{

printf("Error?format,Usage:?display?filename1\n");

return;?//鍵入了錯(cuò)誤的命令行,結(jié)束程序的執(zhí)行

}

//按讀方式打開由argv[1]指出的文件

if((fp=fopen(argv[1],"r"))==NULL)

{

printf("The?file?%s?can?not?be?opened.\n",argv[1]);//打開操作不成功

return;//結(jié)束程序的執(zhí)行

}

//成功打開了argv[1]所指文件

ch=fgetc(fp);?//從fp所指文件的當(dāng)前指針位置讀取一個(gè)字符

while(ch!=EOF)?//判斷剛讀取的字符是否是文件結(jié)束符

{

putchar(ch);?//若不是結(jié)束符,將它輸出到屏幕上顯示

ch=fgetc(fp);?//繼續(xù)從fp所指文件中讀取下一個(gè)字符

}?//完成將fp所指文件的內(nèi)容輸出到屏幕上顯示

fclose(fp);?//關(guān)閉fp所指文件

}

求c語言讀取寫入文本文件的函數(shù)實(shí)現(xiàn)

C語言標(biāo)準(zhǔn)庫提供了一系列文件I/O函數(shù)用于文件操作,比如fopen()用于打開文件、fread()、fwrite()用于讀寫文件、fseek()用于設(shè)置操作位置等等,一般C語言教程上都有文件I/O一章,細(xì)致內(nèi)容,可以找本教科書學(xué)習(xí)一下。 下面的示例,是向名為1.txt的文件附加hello world字符串。

#include stdio.h

#include string.h

int main()

{

FILE *fp = fopen("1.txt", "a+");

if (fp==0)

{

printf("can't open file\n");

return 0;

}

fseek(fp, 0, SEEK_END);

char sz_add[] = "hello world\n";

fwrite(sz_add, strlen(sz_add), 1, fp);

fclose(fp);

return 0;

}

#includestdio.h

struct stu

{

char name[10];

int num;

int age;

char addr[15];

}boya[2],boyb[2],*pp,*qq;

main(){

FILE *fp;

char ch;

int i;

pp=boya;

qq=boyb;

if((fp=fopen("stu_list","wb+"))==NULL){

printf("Cannot open file strike any key exit!");

getch();

exit(1);

}

printf("\ninput data\n");

for(i=0;i2;i++,pp++)

scanf("%s%d%d%s",pp-name,pp-num,pp-age,pp-addr);

pp=boya;

for(i=0;i2;i++,pp++)

fprintf(fp,"%s %d %d %s\n",pp-name,pp-num,pp-age,pp-addr);

rewind(fp);

for(i=0;i2;i++,qq++)

fscanf(fp,"%s %d %d %s\n",qq-name,qq-num,qq-age,qq-addr);

printf("\n\nname\tnumber age addr\n");

qq=boyb;

for(i=0;i2;i++,qq++)

printf("%s\t%5d %7d %s\n",qq-name,qq-num, qq-age,qq-addr);

fclose(fp);

}

用C語言實(shí)現(xiàn)文件讀寫操作(4)

用C語言實(shí)現(xiàn)文件讀寫操作

二、直接I/O文件操作

這是C提供的另一種文件操作,它是通過直接存/取文件來完成對(duì)文件的處理,而上篇所說流式文件操作是通過緩沖區(qū)來進(jìn)行;流式文件操作是圍繞一個(gè) FILE指針來進(jìn)行,而此類文件操作是圍繞一個(gè)文件的“句柄”來進(jìn)行,什么是句柄呢?它是一個(gè)整數(shù),是系統(tǒng)用來標(biāo)識(shí)一個(gè)文件(在WINDOWS中,句柄的概念擴(kuò)展到所有設(shè)備資源的標(biāo)識(shí))的唯一的記號(hào)。此類文件操作常用的函數(shù)如下表,這些函數(shù)及其所用的一些符號(hào)在io.h和fcntl.h中定義,在使用時(shí)要加入相應(yīng)的頭文件。

函數(shù) 說明

open() 打開一個(gè)文件并返回它的句柄

close() 關(guān)閉一個(gè)句柄

lseek() 定位到文件的指定位置

read() 塊讀文件

write() 塊寫文件

eof() 測(cè)試文件是否結(jié)束

filelength() 取得文件長(zhǎng)度

rename() 重命名文件

chsize() 改變文件長(zhǎng)度

下面就對(duì)這些函數(shù)一一說明:

1.open()

打開一個(gè)文件并返回它的句柄,如果失敗,將返回一個(gè)小于0的值,原型是int open(const char *path, int access [, unsigned mode]); 參數(shù)path是要打開的文件名,access是打開的模式,mode是可選項(xiàng)。表示文件的屬性,主要用于UNIX系統(tǒng)中,在DOS/WINDOWS這個(gè)參數(shù)沒有意義。其中文件的打開模式如下表。

符號(hào) 含義 符號(hào) 含義 符號(hào) 含義

O_RDONLY 只讀方式 O_WRONLY 只寫方式 O_RDWR 讀/寫方式

O_NDELAY 用于UNIX系統(tǒng) O_APPEND 追加方式 O_CREAT 如果文件不存在就創(chuàng)建

O_TRUNC 把文件長(zhǎng)度截為0 O_EXCL 和O_CREAT連用,如果文件存在返回錯(cuò)誤 O_BINARY 二進(jìn)制方式

O_TEXT 文本方式

對(duì)于多個(gè)要求,可以用"|"運(yùn)算符來連接,如O_APPEND|O_TEXT表示以文本模式和追加方式打開文件。

例:int handle=open("c:\\msdos.sys",O_BINARY|O_CREAT|O_WRITE)

2.close()

關(guān)閉一個(gè)句柄,原型是int close(int handle);如果成功返回0

例:close(handle)

3.lseek()

定位到指定的位置,原型是:long lseek(int handle, long offset, int fromwhere);參數(shù)offset是移動(dòng)的量,fromwhere是移動(dòng)的基準(zhǔn)位置,取值和前面講的fseek()一樣,SEEK_SET:文件首部;SEEK_CUR:文件當(dāng)前位置;SEEK_END:文件尾。此函數(shù)返回執(zhí)行后文件新的存取位置。

例:

lseek(handle,-1234L,SEEK_CUR);//把存取位置從當(dāng)前位置向前移動(dòng)1234個(gè)字節(jié)。

x=lseek(hnd1,0L,SEEK_END);//把存取位置移動(dòng)到文件尾,x=文件尾的位置即文件長(zhǎng)度

4.read()

從文件讀取一塊,原型是int read(int handle, void *buf, unsigned len);參數(shù)buf保存讀出的數(shù)據(jù),len是讀取的字節(jié)。函數(shù)返回實(shí)際讀出的字節(jié)。

例:char x[200];read(hnd1,x,200);

5.write()

寫一塊數(shù)據(jù)到文件中,原型是int write(int handle, void *buf, unsigned len);參數(shù)的含義同read(),返回實(shí)際寫入的字節(jié)。

例:char x[]="I Love You";write(handle,x,strlen(x));

7.eof()

類似feof(),測(cè)試文件是否結(jié)束,是返回1,否則返回0;原型是:int eof(int handle);

例:while(!eof(handle1)){……};

8.filelength()

返回文件長(zhǎng)度,原型是long filelength(int handle);相當(dāng)于lseek(handle,0L,SEEK_END)

例:long x=filelength(handle);

9.rename()

重命名文件,原型是int rename(const char *oldname, const char *newname); 參數(shù)oldname是舊文件名,newname是新文件名。成功返回0

例:rename("c:\\config.sys","c:\\config.w40");

10.chsize();

改變文件長(zhǎng)度,原型是int chsize(int handle, long size);參數(shù)size表示文件新的長(zhǎng)度,成功返回0,否則返回-1,如果指定的長(zhǎng)度小于文件長(zhǎng)度,則文件被截短;如果指定的長(zhǎng)度大于文件長(zhǎng)度,則在文件后面補(bǔ)''\0''。

例:chsize(handle,0x12345);

;

網(wǎng)站欄目:c語言中的文件讀寫函數(shù),c語言中的文件讀寫函數(shù)是什么
URL鏈接:http://muchs.cn/article42/hcpshc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營(yíng)銷型網(wǎng)站建設(shè)、企業(yè)網(wǎng)站制作企業(yè)建站、虛擬主機(jī)建站公司、移動(dòng)網(wǎng)站建設(shè)

廣告

聲明:本網(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í)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設(shè)計(jì)公司