精品午夜福利中文字av_国产成人综合网_av毛片免费观看网站_欧美影视国产综合_野花香视频中文免费观看_亚洲无码要在线视频_又粗又大又用力大交换好大好爽小静_欧美贵妇v办公室高跟鞋_亚洲国产高清a∨网站_免费中文少妇亚洲

知ing

C語言程序設(shè)計(jì)教程

楊路明 郭浩志 編 / 北京郵電大學(xué)出版社

紅塵陌上 上傳

查看本書

第11章 文件

1:????/*c語言數(shù)據(jù)文件有幾種存儲(chǔ)形式?每種存儲(chǔ)形式個(gè)有什么特點(diǎn)?*/

??????答:在C語言使用的文件系統(tǒng)中,數(shù)據(jù)文件的數(shù)據(jù)存儲(chǔ)形式有兩種:一種以字符形式存放,這種文件稱為字符文件

??????????,也稱為文本文件或者是正文文件;另外一種是以二進(jìn)制代碼形式存放,這種文件稱為二進(jìn)制文件。

??????????一般的說,二進(jìn)制文件節(jié)省存儲(chǔ)空間,并且在輸入時(shí)不需要把字符代碼先轉(zhuǎn)化成二進(jìn)制代碼形式再送入內(nèi)存,

??????????在輸出時(shí)也不需要把數(shù)據(jù)由二進(jìn)制代碼轉(zhuǎn)化成字符代碼再輸出,因而輸入輸出速度快。用戶程序在實(shí)用中,從

?????????節(jié)省時(shí)間和空間的要求考慮,一般選用二進(jìn)制文件。但是,如果用戶準(zhǔn)備的數(shù)據(jù)是作為文檔使用閱讀時(shí),則一

??????????般使用字符文件,他們可以方便,快捷的通過顯示器或打印機(jī)直接輸出。

2:?/*打開文件,關(guān)閉文件的含義是什么?為什么要打開關(guān)閉文件?*/

????答:?打開文件的含義:要把文件使用方式寫入FILE結(jié)構(gòu)體變量中;返回一個(gè)FILE結(jié)構(gòu)體指針,指向該文件的FILE結(jié)構(gòu)

?????????體變量,通過該文件指針可以對(duì)文件進(jìn)行操作。

?????????關(guān)閉文件的含義:文件指針不再指向原來指向的文件。

?????????為什么要打開文件:(1)要確定文件的使用方式;(2)要得到一個(gè)指向文件的指針;(3)還需檢測(cè)文件是否存在,

?????????磁盤是否出故障等。

?????????為什么要關(guān)閉文件:(1)防止文件被誤用;(2)具體系統(tǒng)中同時(shí)打開的文件的數(shù)目是有限的。

?

3:?/*C語言標(biāo)準(zhǔn)的I/O接口操作提供了幾種文件存取方式?每種方式各有什么特點(diǎn)?*/

????答:?標(biāo)準(zhǔn)I/O提供了4種文件存取方法:

?????????(1):讀寫一個(gè)字符。

?????????(2):讀寫一個(gè)字符串,將多個(gè)字符組成的字符串寫入文件或從文件中讀出。

?????????(3):格式化讀寫,根據(jù)格式控制指定的數(shù)據(jù)格式對(duì)數(shù)據(jù)進(jìn)行轉(zhuǎn)換存取。

?????????(4):成塊讀寫,也稱做按記錄讀寫。C語言的文件雖然是按字節(jié)流存放,但可以按記錄存取多個(gè)字節(jié)的數(shù)據(jù)。

?

4/*什么是文件型指針?通過文件指針訪問文件有什么好處?*/

???答:?系統(tǒng)定義FILE結(jié)構(gòu)體類型,建立文件相當(dāng)于定義了一個(gè)FILE結(jié)構(gòu)體變量,該結(jié)構(gòu)體變量存放文件的有關(guān)信息。打開

????????文件返回一個(gè)FILE結(jié)構(gòu)體指針,指向該文件的FILE結(jié)構(gòu)體變量。所以,文件型指針就是指向文件的FILE結(jié)構(gòu)體變量的

????????指針。

????????通過文件指針訪問文件,也即用FILE結(jié)構(gòu)體變量成員,比較方便。

5:???(1)?????[1]:?fopen(fname,"w")

?????[2]:?ch

?????[3]:?fclose(fp)

?????

?

?????(2)?????[1]:?"r+"

?????[2]:?str[i]-32

?????[3]:?"r"

6

#include<stdio.h>

main()

{?FILE?*p;

char?ch;

if((p=fopen(file.c,"w"))==NULL)

{????printf("cannot?open?file.\n");

exit(1);

}

ch=getch();

while(ch!='#')

{????if(ch>=65&&ch<=90)ch+=32;fputc(ch,p);putchar(ch);ch=getchar();}

fclose(p);

}

7、

#include<stdio.h>

void?main()

{?FILE?*fp;

int?i,j,n,k;

char?x[160],ch,t;

if((fp=fopen("file1","r"))==NULL)

{????printf("Can't?open?file1\n");

?????exit(1);

}

for(i=0;(ch=fgetc(fp))!=EOF;i++)

{????x[i]=ch;

}

fclose(fp);

if((fp=fopen("file2","r"))==NULL)

{????printf("Can't?open?file2\n");

?????exit(1);

}

while((ch=fgetc(fp)!=EOF))

{????x[i]=ch;

?????i++;

}

n=i;

for(i=0;i<n-1;i++)

{????k=i;

?????for(j=i+1;j<n;j++)

??????????if(x[i]>x[j])?k=j;

?????????????if(k!=i)

{?t=x[i];x[i]=x[j];x[j]=t;}?

}

if((fp=fopen("file3","w"))==NULL)

{????printf("Can't?open?file3\n");

?????exit(1);

}

for(i=0;i<n;i++)

???fputc(x[i],fp);

fclose(fp);

}

8、

9、

#include<stdio.h>

main()

{?FILE?*fp;

??char?str;

if((fp=fopen("text.txt","w"))==NULL)

{????printf("Can't?open?this?file.\n");

?????exit(1);

}

printf("\nInput??char:?");

while((str=fgetc(stdin))!='#')

?????????fputc(str,fp);

fclose(fp);

fp=fopen("text.txt","r");

while((str=fgetc(fp))!=EOF)

{????if(str>=97&&str<=122)

??????str-=32;

??????fputc(str,stdout);??

}

fclose(fp);

}

10

#include<stdio.h>

struct?student

{?char?sid[15];

char?name[15];

int?score[3];

float?ave;

}stu[100];

void?main()

{?int?i,j,n,sum=0,all[3]={0};

FILE?*fp;

printf("How?many?student?you?want?to?input?:??");

scanf("%d",&n);

for(i=0;i<n;i++)

{???printf("Input?the?message?of?%d?student\n",i+1);

????printf("\tsid:\t");scanf("%s",stu[i].sid);

????printf("\tname:\t");scanf("%s",stu[i].name);

????sum=0;

????for(j=0;j<3;j++)

????{????printf("%d?score:\t",j+1);

?scanf("%d",&stu[i].score[j]);

?sum=sum+stu[i].score[j];/*各個(gè)同學(xué)的總分*/

?all[j]+=stu[i].score[j];/*該班各門課程的總分*/

????}

????stu[i].ave=sum/3.0;

}

if((fp=fopen("stud1","wb"))==NULL)/*文件以二進(jìn)制形式打開*/

{???printf("Can't?open?stud?file\n");

?????????exit(1);

}

for(i=0;i<n;i++)

{???if(fwrite(&stu[i],sizeof(struct?student),1,fp)!=1)/*該班各門課程總分還沒有輸入文件*/

printf("file?write?error.\n");

????fclose(fp);

}

}

11、

#include<stdio.h>

struct?student

{?char?sid[15];

char?name[15];

int?score[3];

float?ave;

}stu1[100],change;

main()

{?FILE?*fp;

int?i,j,n,k;

if((fp=fopen("stud1","rb"))==NULL)

{????printf("Can't?open?file\n");

?????exit(1);

}

for(i=0;fread(&stu1[i],sizeof(struct?student),1,fp)!=1;i++)

fclose(fp);

n=i;

for(i=0;i<n-1;i++)

{????k=i;

?????for(j=i+1;j<n;j++)

if(stu1[i].ave<stu1[j].ave)k=j;

if(k!=i)

{???change=stu1[i];stu1[i]=stu1[j];stu1[j]=change;}

}

fp=fopen("stu2","wb");

for(i=0;i<n;i++)

fwrite(&stu1[i],sizeof(struct?student),1,fp);

fclose(fp);

}



第12章 C語言綜合應(yīng)用程序示例

暫無

查看更多