罗泽兵 发表于 2024-4-15 08:53:01

24.第24节课第十章对文件的输入输出

我们来看一下怎么向文件读写字符那么看一下这个例子,从键盘的写入一些字符,并逐个把它们送到磁盘去,直到用户输入一个井号为止。那么我们看一下这个程序井号includes ddi点h井号SD include SD lib点h。in term file fp,新fp就是定义一个指向文件的这样一个。指针指针变量fpcharch file name时printf请输入使用的文件名的这样一个部分scan f百分号s file name。get CHA riff p=fopen file name,w=now那么printf。海诺的open file x0。我们这里呢,用来打fp=fopen file name w=null用来输,打开输出文件,并使fp呢指向此文件。

如果呢,带回的是一个空指针,就是我们的null的话,那么出错,那么就表示就输出打不开,那么终止程序。那么print另外呢?那么就printf其实就后面的这样一个信息char=get char,while ch不等于我们的井号。那么就是输入井号时呢,就结束那么如果当ch不等于井号的时候呢,就f put CC hfp。向磁盘文件呢,输出一个字符。然后呢?

put char ch将输出的字符呢?显示在屏幕上,然后呢?再输入接收,从键盘输入的一个字符ch=get char。最后呢,关闭文件,我们使用完文件之后呢,要进行关闭。将文件将文件的指针呢?取取消我们文件指针与文件的这样一个联系,那么就关闭这样一个文件f close fp关闭文件。最后呢,put char 10向屏幕输出一个换行服务retarding程序,函数程序结束。

那么,这是我们的。输出。向向盘呢,输入一些字符,并把它们输入到磁盘上的这样一个方式。用来存储数据的文件名呢?可以在f open函数中直接写成字符串,常量的形式也可以在程序决定时呢,用用户临时指定。用f open函数打打开一个只写文件呢。w功能呢?表示只能写入,不能从中读取数据,若成功函数返回该文件所建立的信息区的起始地址的文件指针变量fp。

如果失败,则显示无法打开此文件,用exit函数呢?终止程序运行。此函数呢,在stdlib点h头文件中,那么大家要注意用get char函数呢,接收用户从键盘输入的字符呢,每次只能接受一个字符。我们再看一下,将一个磁盘文件中的信息呢,复制到另一个磁盘文件中。好吧,比如说我们要将刚才建立的f1 file 1 data dat点文件中的这样一个内容呢,复制到另一个磁盘文件中f。

file二点dat中,我们看一下这个程序井号interludes ddi点h井号interludes ddl fd点hin term file in。信号file in file in信号out那么定义两个指向文件的,这样一个指针变量char chin file时out file时。printf scan f那么printf scan fi fin=fopen in filer=null。那么我们这里是打开输入文件,那么如果我们的输入我们的这样一个输入文件呢?那么。不能够打开的话,那么就输出无法打开这样一个文件,那么接下来再打开我们的输出文件。啊f out=fopen out fire,w=love,那么如果不能打开的话呢,就输出无法打开。

那么最后呢?ch等于。fgetc in从文件呢读出一个字符赋给变量ch。well.我们的感叹号。fe of e.那么,如果未遇到输入文件的结束标志了,那么就f put cch out将ch写入写到输出文件。服务的char ch将ch呢显示到屏幕上ch等于。fgetchar in再从文件中呢,读入一个字符赋给变量ch,那么最后呢?put char 10将显示完全部字符后呢?换行。

FC lose inf close out关闭输入输出文件,那么我们最后呢?文件使用完后呢?要进行关闭最后呢?return 0函数返回一个零值程序结束。那么,这是将一个磁盘文件中的信息呢?复制到另一个磁盘文件中的这样一个方式,在访问磁盘文件时呢?是逐个字符字节进行的。为了知道当前访问到的是第几个字节呢,系统使用文件读写标志来表示,当前访问的位置开始使文件读写标志呢,指向第一个字节。每访问完一个字,

节后呢,将读写位置呢,就自动移动到下一个字节,就对当前读写位置的自动后移。我们为了对文件的读写,知道对文件的读写呢是否完成,那么只需看文件读写位置呢?是否移到文件的这样一个末尾?我们来再看一下怎么样向文件读写一个字符串,那么读写一个字符的函数呢?对吧,是我们的f gets和我们的f puts,它这样的形式呢?是f gets straight。nfp它的功能呢?

是从fp指向的文件中呢?读入一个长度为n- 1的字符串。存放到字符数组STR中,如果读成功,则返回地址STR,否则呢,失败返回了。那么f puts st rfp,它是把STR所指向的字符串呢?写到文件指针变量ffp所指向的文件中如。如果输出成功,则返回零,否则呢,返回非零值f gets中的最后一个字母s呢,表示字符串string,

那么表示它含义的含义呢,就是从文件读取一个字符串。f gets的函数原型呢?为char星号。f gets恰。星号STR int n file fp,它的作用呢?是从文件读入一个字符串,那么调用的形式呢?调用的时候呢?我们可以写成这样一个形式,比如说。fgets strnp它的作用呢,就是从fp指向的文件中呢,读入一个长度为n- 1的字符串,

存放到字符数组STR的这样一个这样一个。使用的这样一个部分,其中呢n是要求得到的字符个数,但实际上呢,只从fp指向的文件中读入一个n- 1个字符。最后再加上一个反斜杠n0字符,最后得到的字符呢?共有n个字符,把它们存放在字符数组STR中,如果在读完n- 1个字符之前呢?遇到换行符,反斜杠n或者文件结束符f of。读入界结束,但将所遇到的换行符把这个n呢也作为一个字符读入,若执行fg函数成功,

则返回值为STR数组首元素的地址。如果一开始就返回到文件尾或读数据出错,则返回了。我们的f puts函数的数据,原函数原型呢,是我们的in TF puts。诶,星号STR five星gfp,其作用呢?是将STR所指向的字符串呢?输出到fp所指向的文件中,那么调用时呢?我们可以把它写成f push China fp,把字符串China输出到fp所指向的文件中。fp复制函数呢?

第一个参数呢?可以是字符串常量字符数组名或字符型指针。字符串末尾的零呢,不输出,如果输出成功。函数值为零,失败时呢?函数值为e of就是负1f gets和f puts,这两个函数的功能类似于gets和puts函数。但gets和boots以中断为输出对象,而f gets呢?和f boots函数呢?以指定的文件作为读写对象。那么我们看一下这样一个例子,怎么向文件读写一个字符串从键盘呢?

读入若干字符串对它们按字符大字母的大小进行进行排序。然后把排好序的字符串呢,送到文磁盘文件中保存,我们看一下这个程序井号stds interludes dd二点h井号interludes ddl点dab点h。井号inter路的ST string点hinter main file星p,那么定义一个指向文件的指针变量fp char string 30 temp 10。inti j kn=3 print f four I=0 I小于ni加加guess s+I输入我们的字符串。for I=0 I小于n- 1I加加,那么我们用选择法呢?用字对字符进行串进行进行排序。k=if org,加等于I+1 g,小于NG加加。ifs叉compare。sks string k string j大于0 k=g。

if k不等于is tring tring to py。temps ti.string copy s+is+k string copy s+k temp那么进行一个交换的这样一个部分。那么,如果呢?这两个比较我们字符串的这样一个大字字母的这样一个大小的这样一个部分,那么如果这样一个大小有大,那么是大。比较偏大于的这样一个部分呢,那么进行交换,那么前面呢,是一个大的这样一个部分呢,那么是?是这样一个大小的,这样一个部分呢,

那么可以就进行交交换的,这样一个交换的,这样一个部分,那么如果是啊,这样一个有大小大小大小的,这样一个运用的部分呢,那么进行交换。那么,接下来iff=open d?冒号反两个反斜杠CC两个反斜杠是追减d tw=null,那么打开磁盘文件。那么,反斜杠为转移字符的标志,因此在字符串中呢?要用要表示反斜杠呢?

用两个反斜杠。printf cannot cant open file exist 0。printf the new sequence for I=0 I小于ni加加f puts。string if string if pf puts.反斜杠nfp。像文件,磁盘文件呢?写一个字符串,然后呢?输入一个换行符,那么最后呢?printf百分号s返向strs three。在屏幕上呢,进行显示。最后呢,

函数返回一个零值程序结束。那么,这是我们的。按字母进行排序,然后呢?将字符串呢送入到磁盘中进行保存,那么我们看一下这样一个部分,那么用选择法来对字符进行字符串进行排序。那么首先呢,我们让k=I那么如果。选一个。那么前一个呢?那么这两个比较大小的时候呢?如果大于的话呢?如果大小的这样一个部分呢?

那么就进行交换,那么就是我们选择的这样一个部分。那么,这是我们排序的这样一个运用的,这样一个方式。好吧,我们再来看一下,从键盘读入若干个字符串,将它们按字母大小顺序进行排序,然后把排好序的字符串呢送到磁盘文件中保存。那么我们可以呢,看一下这个程序,其它interludes ddi点h interludes d day b点hinter me file新fp那么定义一个指向文件的,这样一个指针变量fp。恰STR 30 inti if fp=f open,

那么后面的这样一个部分给定到那么文件名的文件路径,必须与当前相同。front f cannot open file,那么如果这样一个不能打开成成功打开的话呢,就输出我们的不能打开的这样一个部分,那么while fgets s dri 10 fp。不等于null那么printf反斜杠百分号sstri,然后I加加。那么如果呢?我们能够读能够读入的话呢?那么我们就如果能够读入的话呢?那么我们就想想输出这样一个部分。然后呢I加加那么。那么,这样一个变量呢?

那么,那么,这样一个循环条件,那么,这样一个条。运用的这样一个条件呢,来进行改变,那么进行下一个这样一个运运行的这样一个部分,那么最后呢ff close fp。关闭掉这样一个程,关闭掉这样一个文件,最后呢?return 0函数返回零零程序结束,那么这是我们的。从键盘读入若干个字符串那么。

然后呢,从文件追脸date中呢,读读回字符串,并在屏幕上显示那么这样一个方式,我们用可以用格式化的方式来读写文本。可以对文件呢进行格式化输入输出,这个时候呢,就要用fp函数和fs can函数,scan f函数。f printf函数呢和f sky f函数那么那么从函数名可以看到呢?它们只是在printf和sky f前面呢?加了一个字符f。它们的作用呢,与print函数呢f和sky f函数相同,相相类似,

都是格式化读写函数。那么只有一点不同的,就是f printf和ff 3f函数的读写对象呢,不是终端,而是文件,它们一般的调用方式呢?为我们的是我们这样一个类类型f printf文件指针格式字符串输出表列。fsc anf文件指针格式字符串输出表列,比如说我们的f print ffp百分号d百分号d六点二f。if将int变量I和float变量lf呢?按照百分号d和百分之六点二f的格式呢?输出到我们的fp所指向的文件中。另外呢,我们的f sky f这样一个调用的方式了,那么可以运用,

可以可以运用的这样一个形式了,可以是这样一个形式的,这样一个部分啊。啊,比如说啊,不对,比如说fsf fp百分号d百分号f取I的地址,取f的地址。如果磁盘文件上呢,有三四点五,那么从中呢,读取整数送给整型变量I读取实数了,送给float变量。f好吧,我们可以呢,

用二进制的方式呢,向文件读取一组数据C语言呢,允许fread函数呢,从文件中读取一个数据块。fright函数呢,向文件读写一个数据块,在读写时呢,是以二进制方式进行的,在向磁盘写入数据时呢。直接将内存中的一组数据原封不动那么进。数据了,那么照原样的复制到磁盘文件上,在读入时呢,也是将文件磁盘文件呢,若干字节的字内容呢,

一批注入数内存。比如说Fred buffer size count fp,比如说Fred buffer size count fp。buffer呢,是一个地址对f Fred,它是用来存放从文件读入的数据的存储区的地址,对fright是从以此地址开始的存储区中。向文件输出。size呢,是要读取的字节数count呢,是要读取多少个字节项f呢fp呢,是file类型指针。比如说我们的float f10好吧,我们可以,那么我们可以呢,

写这样的一个部分Fred f 40 fp。从fp所指向的文件中呢,读入十个四字节的数据啊,存储在我们的数组f中。好吧,我们再看一下,从键盘输入十个学生的有关数据,然后把它们转存到磁盘文件上,比如说我们的int int includes dn h define 30的一个定义,一个宏。那么,用我们的size来表示,我们的10 struct student type。定义我们的深,定义我们的一个结构体。

类型那么再定义一个结构体数组stud size定义全局结构体数组stud包含十个学生数据。那么,再定义一个函数void save定义,我们的函数save向文件呢?输出赛这个学生的数据。file星星号fp inti if。fp等于。fi lef opens tdd at WB=null那么打开输入文件,那么如果不能打开的话呢?那么输出canon的open file。那么,接下来呢?for I=0。I小于size,I加加。

if fright.我们取地址。s7u。gi.size obstruct.student type efp不等于一。那么friend f。f file write error.f close fp.那么最后呢,关闭这样一个文件的,这样这样一个部分。那么再看一下这样一个函数的部分in term。inti printf,please enter data of student for I=0 I小于size I加加。

那么scan f那么输入这样一个数据,那么save,那么再调用这样一个函数,把我们键盘输入的十个学生的数据呢?把它们转存到磁盘文件。那么最后呢,就是零函数返回一个零值,那么程序结束。好吧,我们再看一下。为了验证磁盘文件stud at中呢?是否存存在此数据?那么我们可以用这样一个程序呢?从stud at文件中呢?读入数据,

然后在屏幕上进行输出。好吧,我们看一下这样一个程序井号includes dd点h井号includes ddl点b点h。if井号define赛是十,还依然是定义这样一个红,这样一个红的定义,这样一个定义,这样一个这样一个宏定义是吧?用size来表示十。struct student type char.name inter number inter age chara dre,那么这是我们的。结构体变量的这样一个结构体的这样一个定义。再定义一个结构体数组s qd size inter main inter I file星piff p=f opens teu点击at点rb。引导打开输入文件,

那么如果不能打开的话呢?那么显示不能打开,那么for I=0 I小于size I加加。fread是ST odi的地址,size of struct student type,然后一。fp从fp的文件呢?读入一组数据,那么在屏幕上呢?输出这组数据,最后呢?关闭文件stu。这样一个部分。那么f close fp,然后函数返回一个零值,

那么程序结束,那么这是呢?从s to点dat文件中的读入数据,然后在屏幕上进行显示。好了,我们再看一下在磁盘文件stud d杠next list中读入数据,并放在stud数组中。那么我们看一下这个程序井号includes d do点h井号define size 10。struct那么student type那么定义我们的结构体变量,结构体结构体类型。再定义一个结构体输入CS to d size,那么with no defile星pint I iff p=f open,那么后面的这样一个打开的文件的部分,那么等于null。那么,

如果是返回一个空指针呢?那么就输出不能打开文件,那么for I=0 I小于size I加加if Fred。那么,取stu。di的地址size of structure student type 1 fp不等于一,那么从我们的s to。list中文件中呢?读入数据读入读数据,那么iff uff p呢?那么flow f close fp,如果它这样是一个,如果如果是为零的话,如果如果是出错,那么是如果是出错,

这样一个有错误的话。有错的这样一个部分呢,那么就关闭我们的这样一个文件f close fp,然后retire,然后打输出了之后。file read error,那么最后呢?再再关闭我们的再关闭文件。那么,接下来那么如?那么,在运行的这样一个部分之后呢?那么就。实行的这样一个。实施这样一个关闭文件的部分,

而word save。file星pint in tfp=f open,那么后面的这样一个打开的部分。那么等于道,那么如果不能打开的话呢?输出不能打开,那么return for I=0 I小于size I加加if right?if right,那么后面的这样一个输出的,这样一个部分,那么不等于一啊print就file right error。ff close fp.那么,我们接下来呢?那么,

就是我们的这样一个运行的,这样一个部分inter May inter in ode。save调用这两个函数,然后呢?return 0那么就是从磁盘文件历史图中呢,读出二进制数据并存放在spu数组中。好吧,我们看一下怎么向文件写入一读写一个字符串那么数据的存储方式呢?有文本方式这数据呢?以字符方式s这个码呢?存放在文文文件中。比如审出12送到文件时呢,在两个字节,而不是四个字节,以文本方式表示了数据的便于阅读,

还有二进制方式,数据按内存的存储状态呢,存放在我们的复制,复制了文件。比如说整数12送到文件和内存中呢,占四个之间文件的分类呢,分为文本文件和我们的二进制文件,文本的打开方式呢,有文本方式不带币的方式。读写文件时呢,对换行符进行转换,二进制方式呢,代逼的方式,读写文件时呢,对换行符不进行转换文件,

读写函数呢,有文本。读写函数用来向文本文件读写字符串的函数,比如说fgets f puts。f get CF put CF sky ff printf哎文二进制读写函数呢,用来向二进制文件读写二进制数据的函数,比如说get w。good wf read和fwrite。那么我们再看一下熟悉读取文件,对文件进行顺序读写呢,那么比较容易操作,那效率不高,而随机访问呢,不是按数据在文件中的物理位置顺序进行读写。而是呢,

可以对任何位置上的数据进行读写,那么这种方法呢,与顺序访问效率高。那么我们看一下文件位置,进行定位文件位置标记了,为了对文件读写进行控制,系统为每个文件呢,设置一个文件读写位置标志。那么,简称文件位置标志或者文件标记用来指示下一个字符的这样一个位置,那么一般情况下呢?对文件字符进行顺序读写时,文件位置。标志了指向文件开头,此时如果对文件进行读写操作,

在读完第一个字符后呢,文件位置标记顺序于后一个位置,在下一次执行读写操作时。就像此位置标志了指向第二个字符进行读写或输入,那么一直到了遇见吴建伟,此时文件标志了在最后一个数据之之后。对流式文件既可以进行顺序读写,也可以进行随机读写。那么,比如说文件位置标记了,在字节顺序按顺序移动,就是顺序读写。如果能将文件位置标记了,按照需要的移动到顺序位置,可以实现随机读写。

好同学们,那么今天呢?我们为大家讲解了我们用户这样一个使用文件进行输入,输出就是利用文件来保存文件的。文件来保存数据的这样一个方式,我们讲过了,文件的这样一个读取文件的这样一个。输出输入以及呢?如何来打开一个文件以及呢?关闭文件以及呢?定义文件的这样一个指向文件的指针,这样一个部分。那么大家呢?下来的时候呢,再看一下这些部分,

那么进行一个了解和熟悉好,我们今天的课呢,就讲到这里好,谢谢大家。


页: [1]
查看完整版本: 24.第24节课第十章对文件的输入输出