真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

c語言修改文件的屬性函數(shù) c語言修改文件指定位置內(nèi)容

用C語言如何修改文件的屬性?

已修改答復(fù),請試驗(yàn)~~

十載專注成都網(wǎng)站制作,企業(yè)網(wǎng)站設(shè)計,個人網(wǎng)站制作服務(wù),為大家分享網(wǎng)站制作知識、方案,網(wǎng)站設(shè)計流程、步驟,成功服務(wù)上千家企業(yè)。為您提供網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)頁設(shè)計及定制高端網(wǎng)站建設(shè)服務(wù),專注于企業(yè)網(wǎng)站設(shè)計,高端網(wǎng)頁制作,對被動防護(hù)網(wǎng)等多個領(lǐng)域,擁有多年的網(wǎng)站維護(hù)經(jīng)驗(yàn)。

如果實(shí)在linux下,你可以用stat()函數(shù)查看,windows下我不知道函數(shù),通常我是在linux下做的。。

不過在windows下,你可以使用

需要包含

#include

system("attrib"

+

szfilename);

看看,szfilename是你的文件名,寫入雙引號內(nèi)~

比如文件叫a.c

你就

system("attrib

a.c");

即可~

怎么用C語言修改文件內(nèi)容

1.fopen()

fopen的原型是:FILE *fopen(const char *filename,const char *mode),fopen實(shí)現(xiàn)三個功能:為使用而打開一個流,把一個文件和此流相連接,給此流返回一個FILR指針。

參數(shù)filename指向要打開的文件名,mode表示打開狀態(tài)的字符串,其取值如下:

字符串 含義

"r" 以只讀方式打開文件

"w" 以只寫方式打開文件

"a" 以追加方式打開文件

"r+" 以讀/寫方式打開文件,如無文件出錯

"w+" 以讀/寫方式打開文件,如無文件生成新文件

一個文件可以以文本模式或二進(jìn)制模式打開,這兩種的區(qū)別是:在文本模式中回車被當(dāng)成一個字符’\n’,而二進(jìn)制模式認(rèn)為它是兩個字符 0x0D,0x0A;如果在文件中讀到0x1B,文本模式會認(rèn)為這是文件結(jié)束符,也就是二進(jìn)制模型不會對文件進(jìn)行處理,而文本方式會按一定的方式對數(shù)據(jù)作相應(yīng)的轉(zhuǎn)換。

系統(tǒng)默認(rèn)的是以文本模式打開,可以修改全部變量_fmode的值來修改這個設(shè)置,例如_fmode=O_TEXT;就設(shè)置默認(rèn)打開方式為文本模式;而_fmode=O_BINARY;則設(shè)置默認(rèn)打開方式是二進(jìn)制模式。

我們也可以在模式字符串中指定打開的模式,如"rb"表示以二進(jìn)制模式打開只讀文件,"w+t"或"wt+"表示以文本模式打開讀/寫文件。

此函數(shù)返回一個FILE指針,所以申明一個FILE指針后不用初始化,而是用fopen()來返回一個指針并與一個特定的文件相連,如果成敗,返回NULL.

例:

以下是引用片段:

FILE *fp;

if(fp=fopen("123.456","wb"))

puts("打開文件成功");

else

puts("打開文件成敗");

2.fclose()

fclose()的功能就是關(guān)閉用fopen()打開的文件,其原型是:int fclose(FILE *fp);如果成功,返回0,失敗返回EOF。

在程序結(jié)束時一定要記得關(guān)閉打開的文件,不然可能會造成數(shù)據(jù)丟失的情況,我以前就經(jīng)常犯這樣的錯誤。

例:fclose(fp);

3.fputc()

向流寫一個字符,原型是int fputc(int c, FILE *stream); 成功返回這個字符,失敗返回EOF。

例:fputc(’X’,fp);

4.fgetc()

從流中讀一個字符,原型是int fputc(FILE *stream); 成功返回這個字符,失敗返回EOF。

例:char ch1=fgetc(fp);

5. fseek()

此函數(shù)一般用于二進(jìn)制模式打開的文件中,功能是定位到流中指定的位置,原型是int fseek(FILE *stream, long offset, int whence);如果成功返回0,參數(shù)offset是移動的字符數(shù),whence是移動的基準(zhǔn),取值是:

符號常量 值 基準(zhǔn)位置

SEEK_SET 0 文件開頭

SEEK_CUR 1 當(dāng)前讀寫的位置

SEEK_END 2 文件尾部

例:fseek(fp,1234L,SEEK_CUR);//把讀寫位置從當(dāng)前位置向后移動1234字節(jié)(L后綴表示長整數(shù))

fseek(fp,0L,2);//把讀寫位置移動到文件尾

6.fputs()

寫一個字符串到流中,原型int fputs(const char *s, FILE *stream);

例:fputs("I Love You",fp);

7.fgets()

從流中讀一行或指定個字符,原型是char *fgets(char *s, int n, FILE *stream); 從流中讀取n-1個字符,除非讀完一行,參數(shù)s是來接收字符串,如果成功則返回s的指針,否則返回NULL。

例:如果一個文件的當(dāng)前位置的文本如下:

Love ,I Have

But ……..

如果用

fgets(str1,4,file1);

則執(zhí)行后str1="Lov",讀取了4-1=3個字符,而如果用

fgets(str1,23,file1);

則執(zhí)行str="Love ,I Have",讀取了一行(包括行尾的’\n’)。

8.fprintf()

按格式輸入到流,其原型是int fprintf(FILE *stream, const char *format[, argument, …]);其用法和printf()相同,不過不是寫到控制臺,而是寫到流罷了。

例:fprintf(fp,"%2d%s",4,"Hahaha");

9.fscanf()

從流中按格式讀取,其原型是int fscanf(FILE *stream, const char *format[, address, …]);其用法和scanf()相同,不過不是從控制臺讀取,而是從流讀取罷了。

例:fscanf(fp,"%d%d" ,x,y);

10.feof()

檢測是否已到文件尾,是返回真,否則返回0,其原型是int feof(FILE *stream);

例:if(feof(fp))printf("已到文件尾");

11.ferror()

原型是int ferror(FILE *stream);返回流最近的錯誤代碼,可用clearerr()來清除它,clearerr()的原型是void clearerr(FILE *stream);

例:printf("%d",ferror(fp));

12.rewind()

把當(dāng)前的讀寫位置回到文件開始,原型是void rewind(FILE *stream);其實(shí)本函數(shù)相當(dāng)于fseek(fp,0L,SEEK_SET);

例:rewind(fp);

13.remove()

刪除文件,原型是int remove(const char *filename); 參數(shù)就是要刪除的文件名,成功返回0。

例:remove("c:\\io.sys");

14.fread()

從流中讀指定個數(shù)的字符,原型是size_t fread(void *ptr, size_t size, size_t n, FILE *stream);參數(shù)ptr是保存讀取的數(shù)據(jù),void*的指針可用任何類型的指針來替換,如char*、int *等等來替換;size是每塊的字節(jié)數(shù);n是讀取的塊數(shù),如果成功,返回實(shí)際讀取的塊數(shù)(不是字節(jié)數(shù)),本函數(shù)一般用于二進(jìn)制模式打開的文件中。

例:

以下是引用片段:

char x[4230];

FILE *file1=fopen("c:\\msdos.sys","r");

fread(x,200,12 ,file1);//共讀取200*12=2400個字節(jié)

15.fwrite()

與fread對應(yīng),向流中寫指定的數(shù)據(jù),原型是size_t fwrite(const void *ptr, size_t size, size_t n, FILE *stream);參數(shù)ptr是要寫入的數(shù)據(jù)指針,void*的指針可用任何類型的指針來替換,如char*、int *等等來替換;size是每塊的字節(jié)數(shù);n是要寫的塊數(shù),如果成功,返回實(shí)際寫入的塊數(shù)(不是字節(jié)數(shù)),本函數(shù)一般用于二進(jìn)制模式打開的文件中。

例:

以下是引用片段:

char x[]="I Love You";

fwire(x, 6,12,fp);//寫入6*12=72字節(jié)

將把"I Love"寫到流fp中12次,共72字節(jié)

16.tmpfile()

其原型是FILE *tmpfile(void); 生成一個臨時文件,以"w+b"的模式打開,并返回這個臨時流的指針,如果失敗返回NULL。在程序結(jié)束時,這個文件會被自動刪除。

例:FILE *fp=tmpfile();

17.tmpnam();

其原型為char *tmpnam(char *s); 生成一個唯一的文件名,其實(shí)tmpfile()就調(diào)用了此函數(shù),參數(shù)s用來保存得到的文件名,并返回這個指針,如果失敗,返回NULL。

例:tmpnam(str1);

C語言中什么函數(shù)可以修改文件內(nèi)容(可以隨意刪除原內(nèi)容的一部分)?

C語言文件操作詳解

C語言中沒有輸入輸出語句,所有的輸入輸出功能都用 ANSI C提供的一組標(biāo)準(zhǔn)庫函數(shù)來實(shí)現(xiàn)。文件操作標(biāo)準(zhǔn)庫函數(shù)有:

文件的打開操作 fopen 打開一個文件

文件的關(guān)閉操作 fclose 關(guān)閉一個文件

文件的讀寫操作 fgetc 從文件中讀取一個字符

  fputc 寫一個字符到文件中去

  fgets 從文件中讀取一個字符串

  fputs 寫一個字符串到文件中去

  fprintf 往文件中寫格式化數(shù)據(jù)

  fscanf 格式化讀取文件中數(shù)據(jù)

  fread 以二進(jìn)制形式讀取文件中的數(shù)據(jù)

  fwrite 以二進(jìn)制形式寫數(shù)據(jù)到文件中去

  getw 以二進(jìn)制形式讀取一個整數(shù)

  putw 以二進(jìn)制形式存貯一個整數(shù)

 文件狀態(tài)檢查函數(shù) feof 文件結(jié)束

  ferror 文件讀/寫出錯

  clearerr 清除文件錯誤標(biāo)志

  ftell 了解文件指針的當(dāng)前位置

文件定位函數(shù) rewind 反繞

  fseek 隨機(jī)定位

# 文件的打開

 1.函數(shù)原型

FILE *fopen(char *pname,char *mode)

 2.功能說明

按照mode 規(guī)定的方式,打開由pname指定的文件。若找不到由pname指定的相應(yīng)文件,就按以下方式之一處理:

(1) 此時如mode 規(guī)定按寫方式打開文件,就按由pname指定的名字建立一個新文件;

(2) 此時如mode 規(guī)定按讀方式打開文件,就會產(chǎn)生一個錯誤。

打開文件的作用是:

(1)分配給打開文件一個FILE 類型的文件結(jié)構(gòu)體變量,并將有關(guān)信息填入文件結(jié)構(gòu)體變量;

(2)開辟一個緩沖區(qū);

(3)調(diào)用操作系統(tǒng)提供的打開文件或建立新文件功能,打開或建立指定文件;

FILE *:指出fopen是一個返回文件類型的指針函數(shù);

 3.參數(shù)說明

pname:是一個字符指針,它將指向要打開或建立的文件的文件名字符串。

mode:是一個指向文件處理方式字符串的字符指針。所有可能的文件處理方式見表8.1

 4.返回值

 正常返回:被打開文件的文件指針。

 異常返回:NULL,表示打開操作不成功。

例如:

//定義一個名叫fp文件指針

FILE *fp;

//判斷按讀方式打開一個名叫test的文件是否失敗

if((fp=fopen("test","r")) == NULL)//打開操作不成功

{

printf("The file can not be opened.\n");  

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

}

 要說明的是:C語言將計算機(jī)的輸入輸出設(shè)備都看作是文件。例如,鍵盤文件、屏幕文件等。ANSI C標(biāo)準(zhǔn)規(guī)定,在執(zhí)行程序時系統(tǒng)先自動打開鍵盤、屏幕、錯誤三個文件。這三個文件的文件指針分別是:標(biāo)準(zhǔn)輸入stdin、標(biāo)準(zhǔn)輸出stdout和標(biāo)準(zhǔn)出錯 stderr。

* 文件的關(guān)閉

1. 函數(shù)原型

int fclose(FILE *fp);

2. 功能說明

關(guān)閉由fp指出的文件。此時調(diào)用操作系統(tǒng)提供的文件關(guān)閉功能,關(guān)閉由fp-fd指出的文件;釋放由fp指出的文件類型結(jié)構(gòu)體變量;返回操作結(jié)果,即0或EOF。

3. 參數(shù)說明

fp:一個已打開文件的文件指針。

4. 返回值

正常返回:0。

異常返回:EOF,表示文件在關(guān)閉時發(fā)生錯誤。

例如:

int n=fclose(fp);

*文件的讀寫操作

A. 從文件中讀取一個字符

1. 函數(shù)原型

int fgetc(FILE *fp);

2. 功能說明

從fp所指文件中讀取一個字符。

3. 參數(shù)說明

fp:這是個文件指針,它指出要從中讀取字符的文件。

4. 返回值

正常返回: 返回讀取字符的代碼。

非正常返回:返回EOF。例如,要從"寫打開"文件中讀取一個字符時,會發(fā)生錯誤而返回一個EOF。

5. 實(shí)例

【例】顯示指定文件的內(nèi)容。

//程序名為:display.c

//執(zhí)行時可用:display filename1 形式的命令行運(yùn)行。顯示文件filename1中的內(nèi)容。例如,執(zhí)行命令行display display.c將在屏幕上顯示display的原代碼。

//File display program.

#include stdio.h

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

{

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

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

if(argc!=2)

{

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

return; //鍵入了錯誤的命令行,結(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)前指針位置讀取一個字符

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

{

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

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

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

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

}

B. 寫一個字符到文件中去

1. 函數(shù)原型

int fputc(int ch,FILE *fp)

2. 功能說明

把ch中的字符寫入由fp指出的文件中去。

3. 參數(shù)說明

ch:是一個整型變量,內(nèi)存要寫到文件中的字符(C語言中整型量和字符量可以通用)。

fp:這是個文件指針,指出要在其中寫入字符的文件。

4. 返回值

正常返回: 要寫入字符的代碼。

非正常返回:返回EOF。例如,要往"讀打開"文件中寫一個字符時,會發(fā)生錯誤而返回一個EOF。

5. 實(shí)例

【例】將一個文件的內(nèi)容復(fù)制到另一個文件中去。

//程序名為:copyfile.c

//執(zhí)行時可用:copyfile filename1 filename2形式的命令行運(yùn)行,將文件filename1中的內(nèi)容復(fù)制到文件filename2中去。

//file copy program.

#include stdio.h

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

{

int ch;

FILE *in,*out; //定義in和out兩個文件類型指針

if(argc!=3) //判斷命令行是否正確

{

printf("Error in format,Usage: copyfile filename1 filename2\n");

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

}

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

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

{

printf("The file %s can not be opened.\n",argv[1]);

return; //打開失敗,結(jié)束程序的執(zhí)行

}

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

//按寫方式打開由argv[2]指出的文件

if((out=fopen(argv[2],"w"))==NULL)

{

printf("The file %s can not be opened.\n",argv[2]);

return; //打開失敗,結(jié)束程序的執(zhí)行

}

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

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

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

{

fputc(ch,out); //若不是結(jié)束符,將它寫入out所指文件

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

} //完成將in所指文件的內(nèi)容寫入(復(fù)制)到out所指文件中

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

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

}

【例】按十進(jìn)制和字符顯示文件代碼,若遇不可示字符就用井號"#"字符代替之。

//程序名為:dumpf.c

//執(zhí)行時可用:dumpf filename1 形式的命令行運(yùn)行。

// File dump program.

#include stdio.h

void main(int argc,char *argv[])

{

char str[9];

int ch,count,i;

FILE *fp;

if(argc!=2)

{

printf("Error format,Usage: dumpf filename\n");

return;

}

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

{

printf("The file %s can not be opened.\n",argv[1]);

return;

}

count=0;

do{

i=0;

//按八進(jìn)制輸出第一列,作為一行八個字節(jié)的首地址

printf("%06o: ",count*8);

do{

// 從打開的文件中讀取一個字符

ch=fgetc(fp);

// 按十進(jìn)制方式輸出這個字符的ASCII碼

printf("%4d",ch);

// 如果是不可示字符就用"#"字符代替

if(ch' '||ch'~') str[i]='#';

// 如果是可示字符,就將它存入數(shù)組str以便形成字符串

else str[i]=ch;

// 保證每一行輸出八個字符

if(++i==8) break;

}while(ch!=EOF); // 遇到文件尾標(biāo)志,結(jié)束讀文件操作

str[i]='\0'; // 在數(shù)組str加字符串結(jié)束標(biāo)志

for(;i8;i++) printf(" "); // 一行不足八個字符用空格填充

printf(" %s\n",str); // 輸出字符串

count++; // 準(zhǔn)備輸出下一行

}while(ch!=EOF); // 直到文件結(jié)束

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

}

C. 從文件中讀取一個字符串

1. 函數(shù)原型

char *fgets(char *str,int n,FILE *fp)

2. 功能說明

從由fp指出的文件中讀取n-1個字符,并把它們存放到由str指出的字符數(shù)組中去,最后加上一個字符串結(jié)束符'\0'。

3. 參數(shù)說明

str:接收字符串的內(nèi)存地址,可以是數(shù)組名,也可以是指針。

n: 指出要讀取字符的個數(shù)。

fp:這是個文件指針,指出要從中讀取字符的文件。

4. 返回值

正常返回:返回字符串的內(nèi)存首地址,即str的值。

非正常返回:返回一個NULL值,此時應(yīng)當(dāng)用feof()或ferror()函數(shù)來判別是讀取到了文件尾,還是發(fā)生了錯誤。例如,要從"寫打開"文件中讀取字符串,將

發(fā)生錯誤而返回一個NULL值。

D. 寫一個字符串到文件中去

1. 函數(shù)原型

int fputs(char *str,FILE *fp)

2. 功能說明

把由str指出的字符串寫入到fp所指的文件中去。

3. 參數(shù)說明

str:指出要寫到文件中去的字符串。

fp:這是個文件指針,指出字符串要寫入其中的文件。

4. 返回值

正常返回: 寫入文件的字符個數(shù),即字符串的長度。

非正常返回:返回一個NULL值,此時應(yīng)當(dāng)用feof()或ferror()函數(shù)來判別是讀取到了文件尾,還是發(fā)生了錯誤。例如,要往一個"讀打開" 文件中寫字符串時,

會發(fā)生錯誤而返回一個NULL值。

5.實(shí)例

【例】以下程序?qū)⒁粋€文件的內(nèi)容附加到另一個文件中去。

//程序名:linkfile.c

//執(zhí)行時可用:linkfile filename1 filename2形式的命令行運(yùn)行,將文件filename2的內(nèi)容附加在文件filename1之后。

// file linked program.

#include stdio.h

#define SIZE 512

void main(int argc,char *argv[])

{

char buffer[SIZE];

FILE *fp1,*fp2;

if(argc!=3)

{

printf("Usage: linkfile filename1 filename2\n");

return;

}

// 按追加方式打開argv[1] 所指文件

if((fp1=fopen(argv[1],"a"))==NULL)

{

printf("The file %s can not be opened.\n",argv[1]);

return;

}

if((fp2=fopen(argv[2],"r"))==NULL)

{

printf("The file %s can not be opened.\n",argv[2]);

return;

}

// 讀入一行立即寫出,直到文件結(jié)束

while(fgets(buffer,SIZE,fp1)!=NULL)

printf("%s\n",buffer);

while(fgets(buffer,SIZE,fp2)!=NULL)

fputs(buffer,fp1);

fclose(fp1);

fclose(fp2);

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

{

printf("The file %s can not be opened.\n",argv[1]);

return;

}

while(fgets(buffer,SIZE,fp1)!=NULL)

printf("%s\n",buffer);

fclose(fp1);

}

C語言怎么修改文件信息?

#includestdio.h

#includestdlib.h//文件操作函數(shù)頭文件

struct st{//定義一個結(jié)構(gòu)體

char a[11];//301

char b[11];//01

char c[29];//xiaoming

char d[9];//m1

};

int main()

{

FILE *fp;//文件指針

fp=fopen("D:\\123.txt","r+");//用fopen函數(shù)打開D盤下,名為123.txt的文件;

struct st s={"301","01","xiaoming","m"};//各成員的初值;

scanf("%s%s",s.c,s.d);//輸入之后會把原有的信息覆蓋掉;

fprintf(fp,"%s %s %s",s.a,s.b,s.c,s.d);//用fprintf函數(shù)將固定格式的數(shù)據(jù)寫入文件;

printf("%s %s %s %s",s.a,s.b,s.c,s.d);

fclose(fp);

return 0;

/*這樣就可以修改文件內(nèi)容了,之前沒仔細(xì)看,沒看到是文件操作*/

}


網(wǎng)站題目:c語言修改文件的屬性函數(shù) c語言修改文件指定位置內(nèi)容
瀏覽路徑:http://weahome.cn/article/ddepsjj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部