久久久精品一区ed2k-女人被男人叉到高潮的视频-中文字幕乱码一区久久麻豆樱花-俄罗斯熟妇真实视频

c語言主函數(shù)中讀取文件,c語言命令行讀取文件

c語言如何讀取文件并輸出

c語言讀取文件并輸出的代碼如下:

成都創(chuàng)新互聯(lián)公司是一家專注于網(wǎng)站制作、成都網(wǎng)站建設(shè)與策劃設(shè)計(jì),江陵網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)十余年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:江陵等地區(qū)。江陵做網(wǎng)站價(jià)格咨詢:18980820575

#includestdio.h

inta;

charb,c[100];

intmain(){

FILE*fp1=fopen("input.txt","r");//打開輸入文件

FILE*fp2=fopen("output.txt","w");//打開輸出文件

if(fp1==NULL||fp2==NULL){//若打開文件失敗則退出

puts("不能打開文件?。ⅲ?;

return0;

fscanf(fp1,"%d",a);//從輸入文件讀取一個(gè)整數(shù)

b=fgetc(fp1);//從輸入文件讀取一個(gè)字符

fgets(c,100,fp1);//從輸入文件讀取一行字符串

printf("%ld",ftell(fp1));//輸出fp1指針當(dāng)前位置相對(duì)于文件首的偏移字節(jié)數(shù)

fputs(c,fp2);//向輸出文件寫入一行字符串

fputc(b,fp2);//向輸出文件寫入一個(gè)字符

fprintf(fp2,"%d",a);//向輸出文件寫入一個(gè)整數(shù)

fclose(fp1);//關(guān)閉輸入文件

fclose(fp2);//關(guān)閉輸出文件,相當(dāng)于保存

return0;

C語言中使用fopen()函數(shù)實(shí)現(xiàn)文件的讀取,使用fgetc()函數(shù)讀取文件中的字符,使用fclose()實(shí)現(xiàn)文件的關(guān)閉,注意:打開文件流必須要關(guān)閉文件流,不然會(huì)持續(xù)占用計(jì)算機(jī)內(nèi)存資源。

擴(kuò)展資料:

fopen函數(shù)

C語言中fopen函數(shù)可以兩個(gè)參數(shù),fopen(const char *filename, const char *mode)。

第一個(gè)參數(shù)filename:這是 C 字符串,包含了要打開的文件名稱。

第二個(gè)參數(shù)mode:這是 C 字符串,包含了文件訪問模式。

參考資料來源:百度百科-fopen

C語言讀取文件數(shù)據(jù)

先用getline或fgets讀取數(shù)據(jù)到一個(gè)字符串中,這個(gè)串定義的長(zhǎng)一點(diǎn),保證夠用就行。

舉例:

char str[1024]。

fgets( str , sizeof(str), fp ),//fp打開的文件指針。

然后調(diào)用for循環(huán)去讀取串的的數(shù)據(jù),假設(shè)你的分隔符是空格,遍歷str,遇到空格就得到一個(gè)數(shù)據(jù),然后繼續(xù)遍歷,直到str尾。

再去fgets數(shù)據(jù),再遍歷,即可得到所有的數(shù)據(jù)。

拓展資料:

C語言是一門通用計(jì)算機(jī)編程語言,廣泛應(yīng)用于底層開發(fā)。

C語言的設(shè)計(jì)目標(biāo)是提供一種能以簡(jiǎn)易的方式編譯、處理低級(jí)存儲(chǔ)器、產(chǎn)生少量的機(jī)器碼以及不需要任何運(yùn)行環(huán)境支持便能運(yùn)行的編程語言。

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

#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;?//鍵入了錯(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í)關(guān)閉文件所致,修改如下:

//---------------------------------------------------------------------------

#includestdio.h

#include conio.h /*建議加入此頭文件,以利于getch()的調(diào)用*/

FILE *fp;

void save(int a[])

{

int i;

if((fp=fopen("xixi.txt","w"))==NULL)/*建議將"w"改為"wb"*/

{

puts("ERROR!\n");

return;

}

for(i=0;i10;i++)

{

fwrite(a[i],sizeof(int),1,fp);

}

fclose(fp); /*********************必須加入這條語句*****************/

}

void load(void)

{

int i,b[10]={0};

if((fp=fopen("xixi.txt","r"))==NULL) /*建議將"r"改為"rb"*/

{

puts("ERROR!\n");

return;

}

i=0;

while(feof(fp)==0)

{

fread(b[i],sizeof(int),1,fp);

i++;

}

for(i=0;i10;i++)

{

printf("%d\n",b[i]);

}

fclose(fp); /*應(yīng)該在讀取結(jié)束后關(guān)閉文件*/

}

int main()

{

int a[10]={1,2,3,4,5,6,7,8,9,10};

save(a);

getch();

load();

getch();

return 1;

}

//---------------------------------------------------------------------------

C語言用fscanf()函數(shù)如何讀取文件全部?jī)?nèi)容?

void read_txt(const char* Input, const char* Output){

FILE *fin = fopen(Input, "rb");//以二進(jìn)制讀入

FILE *fout = fopen(Output, "w");

unsigned char ch1,ch2;

while(fscanf(fin, "%c%c", ch1,ch2) != EOF){//直到文件結(jié)束

fprintf(fout, "%d%d", ch1,ch2);//以10進(jìn)制輸出

}

}

int main(){

read_txt("D:/IN.txt","D:/OUT.txt");//txt文件目錄

return 0;

}

注:判斷文件結(jié)束處的語句:fscanf(fin, "%c%c", ch1,ch2)。其中兩個(gè)%c之間不能加空格,否則讀到的二進(jìn)制文件會(huì)不完整,比源文件少好多個(gè)字節(jié)

請(qǐng)問C語言對(duì)文件的讀取有哪些函數(shù),都有什么功能?像fseek();fscanf();fread......什么的

C語言文件操作函數(shù)

13.1C語言文件

1,兩種文件存取方式(輸入,輸出方式)

順序存取

直接存取

2,數(shù)據(jù)的兩種存放形式

文本文件

二進(jìn)制文件

13.2文件指針

定義文件類型指針變量的一般形式:

FILE *指針變量名;

例如:

FILE *fp1,*fp2;

13.3打開文件

在使用文件之前,需打開文件.在C里使用fopen函數(shù)打開文件.格式為:

fopen(文件名,文件使用方式);

此函數(shù)返回一個(gè)指向FILE類型的指針.如:

FILE *fp;

fp=fopen("file_1","r");

如果調(diào)用成功,fp就指向file_1,否則返回為NULL,所以為了保證文件的正確使用,要進(jìn)行測(cè)試.采用如下語句:

If((fp=fopen("file_1","r"))==NULL)

{

printf("Cannot open this file\n");

exit(0);

}

最常用的文件使用方式及其含義如下:

1,"r".為讀而打開文本文件.(不存在則出錯(cuò))

2,"rb".為讀而打開二進(jìn)制文件.

3,"w".為寫而打開文本文件.(若不存在則新建,反之,則從文件起始位置寫,原內(nèi)容將被覆蓋)

4,"wb".為寫而打開二進(jìn)制文件.

5,"a".為在文件后面添加數(shù)據(jù)而打開文本文件.(若不存在,則新建;反之,在原文件后追加)

6,"ab".為在文件后面添加數(shù)據(jù)而打開一個(gè)二進(jìn)制文件.

最常用的文件使用方式及其含義如下:

7,"r+".為讀和寫而打開文本文件.(讀時(shí),從頭開始;在寫數(shù)據(jù)時(shí),新數(shù)據(jù)只覆蓋所占的空間,其后不變)

8,"rb+".為讀和寫而打開二進(jìn)制文件.只是在隨后的讀寫時(shí),可以由位置函數(shù)設(shè)置讀和寫的起始位置.

9,"w+".首先建立一個(gè)新文件,進(jìn)行寫操作,隨后可以從頭開始讀.(若文件存在,原內(nèi)容將全部消失)

10,"wb+".功能與"w+"同.只是在隨后的讀寫時(shí),可以由位置函數(shù)設(shè)置讀和寫的起始位置.

最常用的文件使用方式及其含義如下:

11,"a+".功能與"a"相同;只是在文件尾部添加新的數(shù)據(jù)后,可以從頭開始讀.

12,"ab+".功能與"a+"相同;只是在文件尾部添加新數(shù)據(jù)之后,可以由位置函數(shù)設(shè)置開始讀的起始位置.

13.4關(guān)閉文件

當(dāng)文件的讀寫操作完成之后,使用fclose函數(shù)關(guān)閉文件.格式如下:

fclose(文件指針)

如:fclose(fp);

13.5調(diào)用getc(fgetc)和putc(fputc)函數(shù)進(jìn)行輸入和輸出

1,調(diào)用putc(或fputc)函數(shù)輸出一個(gè)字符

調(diào)用形式為:

putc(ch,fp);

功能是:將字符ch寫到文件指針fp所指的文件中去.當(dāng)輸出成功,putc函數(shù)返回所輸出的字符;否則,返回一個(gè)EOF值.EOF是在stdio.h庫(kù)函數(shù)文件中定義的符號(hào)常量,其值等于-1.

13.5調(diào)用getc(fgetc)和putc(fputc)函數(shù)進(jìn)行輸入和輸出

例如:把從鍵盤輸入的文本按原樣輸出到名為file_1.dat文件中,用字符@作為鍵盤輸入結(jié)束標(biāo)志.

#include

Void main()

{

FILE *fpout;

char ch;

if(fpout=fpopen("file_1","w")==NULL)

{

printf("Cannot open this file!\n");

exit(0);

}

ch=getchar();

while(ch!='@')

{ fputc(ch,fpout); ch=getchar(); }

fclose(fpout);

}

2.調(diào)用getc(或fgetc)函數(shù)輸入一個(gè)字符

調(diào)用形式為:

ch=getc(pf);

功能是:從pf指定的文件中讀如一個(gè)字符,并把它作為函數(shù)值返回.

例如:把一個(gè)已存在磁盤上的file_1.dat文本文件中的內(nèi)容,原樣輸出到終端屏幕上.

#include

void main(){

FILE *fpin;

char ch;

if((fpin=fopen("file_1.dat","r"))==NULL)

{ printf("Cann't open this file!\n");exit(0);}

ch=fgetc(fpin);

while (ch!=EOF)

{ putchar(ch); ch=fgetc(fpin);}

fclose(fpin);

}

13.6判斷文件結(jié)束函數(shù)feof

EOF可以作為文本文件的結(jié)束 標(biāo)志,但不能作為二進(jìn)制文件的結(jié)束符.feof函數(shù)既可以判斷二進(jìn)制文件,又可以判斷文本文件.

例:編寫程序,用于把一個(gè)文本文件(源)復(fù)制到另一個(gè)文件(目的)中,源文件名和目的文件名由命令行輸入.命令形式如下:

可執(zhí)行程序名 源文件名 目的文件名

#include

void filecopy(FILE* ,FILE *);

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

FILE *fpin,*fpout;

if(argc==3)

{ fpin=fopen(argv[1],"r");

fpout=fopen(argv[2],"w");

filecopy(fpin,fpout);

fclose(fpin);fclose(fpout);

}

else if(argc3)

printf("The file names too many!!\n";

else

printf("There are no file names for input or output!!\n );

}

void filecopy(FILE *fpin,FILE *fpout)

{

char ch;

ch=getc(fpin);

while(!feof(fpin))

{putc(ch,fpout); ch=getc(fpin);}

}

13.7fscanf函數(shù)和fprintf函數(shù)

1,fscanf函數(shù)

fscanf只能從文本文件中按格式輸入,和scanf函數(shù)相似,只不過輸入的對(duì)象是磁盤上文本文件中的數(shù)據(jù).調(diào)用形式為:

fscanf(文件指針,格式控制字符串,輸入項(xiàng)表)

例如:fscanf(fp,"%d%d",a,b);

fscanf(stdin,"%d%d",a,b);

等價(jià)于scanf("%d%d",a,b);

3.fprintf函數(shù)

fprintf函數(shù)按格式將內(nèi)存中的數(shù)據(jù)轉(zhuǎn)換成對(duì)應(yīng)的字符,并以ASCII代碼形式輸出到文本文件中.Fprintf函數(shù)和printf函數(shù)相似,只是將輸出的內(nèi)容按格式存放到磁盤的文本文件中.調(diào)用形式如下:

fprintf(文件指針,格式控制字符串,輸出項(xiàng)表)

如:fprintf(fp,"%d %d",x,y);

以下語句 fprintf(stdout,"%d %d",x,y)

13.8fgets函數(shù)和fputs函數(shù)

1,fgets函數(shù)

fgets函數(shù)用來從文件中讀入字符串.調(diào)用形式如下:

fgets(str,n,fp);

函數(shù)功能是:從fp所指文件中讀入n-1個(gè)字符放入str為起始地址的空間內(nèi);如果在未讀滿n-1個(gè)字符時(shí),則遇到換行符或一個(gè)EOF結(jié)束本次讀操作,并已str作為函數(shù)值返回.

13.8fgets函數(shù)和fputs函數(shù)

2,fputs函數(shù)

fput函數(shù)把字符串輸出到文件中.函數(shù)調(diào)用形式如下:

fputs(str,fp);

注意:為了便于讀入,在輸出字符串時(shí),應(yīng)當(dāng)人為的加諸如"\n"這樣的字符串.

#include stdio.h

#include iostream

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

{

char arr[10] ;

char *ap = "hello!" ;

FILE *fp ;

if ((fp = fopen("hello.txt", "wt+")) == NULL)

{

printf("error!") ;

exit(1) ;

}

fputs(ap, fp) ;

rewind(fp) ; //

fgets(arr, 10, fp) ;

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

fclose(fp) ;

return 0 ;

}

13.9fread函數(shù)和fwrite函數(shù)

例如有如下結(jié)構(gòu)體:

struct st{

char num[8];

float mk[5];

}pers[30];

以下循環(huán)將把這30個(gè)元素中的數(shù)據(jù)輸出到fp所指文件中.

for(i=0;i30;i++)

fwrite(pers[i],sizeof(struct st),1,fp);

13.9fread函數(shù)和fwrite函數(shù)

以下語句從fp所指的文件中再次將每個(gè)學(xué)生數(shù)據(jù)逐個(gè)讀入到pers數(shù)組中.

i=0;

fread(pers[i],sizeof(struct st),1,fp);

while(!feof(fp))

{ i++;

fread(pers[i],sizeof(struct st),1,fp);

}

13.10文件定位函數(shù)

1,fseek函數(shù)

fseek函數(shù)用來移動(dòng)文件位置指針到指定的位置上,接著的讀或?qū)懖僮鲗拇宋恢瞄_始.函數(shù)的調(diào)用形式如下:

fseek(pf,offset,origin)

pf:文件指針

offset:以字節(jié)為單位的位移量,為長(zhǎng)整形.

origin:是起始點(diǎn),用來指定位移量是以哪個(gè)位置為基準(zhǔn)的.

1,fseek函數(shù)

位移量的表示方法

標(biāo)識(shí)符 數(shù)字 代表的起始點(diǎn)

SEEK_SET 0 文件開始

SEEK_END 2 文件末尾

SEEK_CUR 1 文件當(dāng)前位置

假設(shè)pf已指向一個(gè)二進(jìn)制文件,則;

fseek(pf,30L,SEEK_SET)

fseek(pf,-10L*sizeof(int),SEEK_END)

對(duì)于文本文件,位移量必須是0;如:

fseek(pf,0L,SEEK_SET)

fseek(pf,0L,SEEK_END)

2. ftell函數(shù)

ftell函數(shù)用以獲得文件當(dāng)前位置指針的位置,函數(shù)給出當(dāng)前位置指針相對(duì)于文件開頭的字節(jié)數(shù).如;

long t;

t=ftell(pf);

當(dāng)函數(shù)調(diào)用出錯(cuò)時(shí),函數(shù)返回-1L.

我們可以通過以下方式來測(cè)試一個(gè)文件的長(zhǎng)度:

fseek(fp,0L,SEEK_END);

t=ftell(fp);

3.rewind函數(shù)

調(diào)用形式為:

rewind(pf);

函數(shù)沒有返回值.函數(shù)的功能是使文件的位置指針回到文件的開頭.

13.10文件應(yīng)用

在磁盤上的test.txt文件中放有10個(gè)不小于2的正整數(shù),用函數(shù)調(diào)用方式編寫程序.要求實(shí)現(xiàn):

1,在被調(diào)函數(shù)prime中,判斷和統(tǒng)計(jì)10個(gè)整數(shù)中的素?cái)?shù)以及個(gè)數(shù).

2,在主函數(shù)中將全部素?cái)?shù)追加到磁盤文件test.txt的尾部,同時(shí)輸出到屏幕上.

#include

#include

Int prime(int a[],int n)

{

int I,j,k=0,flag=0;

for(i=0;i { for(j=2;j if(a[i]%j==0)

{ flag=0; break;}

else flag=1;

if(flag)

{a[k]=a[i];k++;}

}

return k;

}

void main(){

int n,I,a[10];

FILE *fp;

fp=fopen("test1-2.txt","r+");

for(n=0;n10;n++)

fscanf(fp,"%d",a[n]);

n=prime(a,n);

fseek(fp,o,2);

for(i=0;i {printf("%3d",a[i]);

fprintf(fp,"%3d",a[i]);

}

fclose(fp);

當(dāng)前標(biāo)題:c語言主函數(shù)中讀取文件,c語言命令行讀取文件
標(biāo)題來源:http://sd-ha.com/article48/hcoeep.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器、標(biāo)簽優(yōu)化、營(yíng)銷型網(wǎng)站建設(shè)、網(wǎng)站維護(hù)、App設(shè)計(jì)、網(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í)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運(yùn)營(yíng)