您的位置: 网站首页 > 程序开发 > C语言程序设计案例教程 > 第十一章 文件操作 > 【11.1 文件的基本操作案例】

11.1 文件的基本操作案例

 

11.1  文件的基本操作案例

案例11.1  向文件中写数据

【项目任务】

向一个磁盘文件中写入若干数据。

【设计思路】

以写的方式打开一个磁盘文件;从键盘上读数据,直到“#”号结束,将每次读出的数据利用fputc( )函数写到文件中;最后关闭文件。

【程序代码】

#include <stdio.h>

main()

{

    FILE *fp;                                /*定义一个文件指针*/

    char ch;

 

    if((fp=fopen("c:\\out.dat","w"))==NULL)  /*以写的方式打开一个文件*/

    {

        printf("Can’t open the file.\n"); 

        exit(0);   /*打开失败后,退出*/

    }

    while((ch=getchar())!='#')               /*从键盘上读数据,直到“#”号结束*/

    {

        fputc(ch,fp);                        /*fputc()函数将数据写到文件*/

    }

    fclose(fp);                              /*关闭文件*/

}

【运行结果】

从键盘上输入:ABC#

c盘中的文件out.dat中的内容为ABC

【知识拓展】

在本案例中,要理解以下几个方面:

1.什么是文件?文件就是指存储在外部介质上的数据集合,它可以分为文本文件和二进制文件。文本文件的每个字节存放一个ASCII代码,代表一个字符,占用存储空间多,便于输出字符;二进制文件将数据按其在内存中的存储形式输出到磁盘上存放,占用存储空间少,不能直接输出字符。

2.什么是文件指针?每个被使用的文件都在内存中开辟一个存储块,用来存放文件的相关信息。这些信息保存在一个结构体变量中,该结构体类型取名FILE这样,即可定义一个指针,用来指向存放被打开文件相关信息的内存区域地址,从而能访问该文件的相关信息。定义文件指针变量的形式为FILE *fp;

3ropen( )函数用来打开文件,此函数返回值为文件指针类型,NULL(该值stdio.h中有定义)代表打开文件失败或发生错误。在编程过程中,一定要检查打开文件是否成功。

4rclose( )函数用来关闭已经打开的文件,此函数返回值为整型,0表示成功,-1EOF表示失败。在编程过程中,应该养成在程序终止前关闭文件的习惯,否则可能会造成数据的丢失。

5.文件的打开方式有很多种,如表11-1所示。

11-1  文件的打开方式

打开方式

具体含义

"r"

只读打开一个文本文件,只允许读数据

"w"

只写打开或建立一个文本文件,只允许写数据

"a"

追加打开一个文本文件,并在文件末尾写数据

"rb"

只读打开一个二进制文件,只允许读数据

"wb"

只写打开或建立一个二进制文件,只允许写数据

"ab"

追加打开一个二进制文件,并在文件末尾写数据

"r+"

读写打开一个文本文件,允许读和写

"w+"

读写打开或建立一个文本文件,允许读写

"a+"

读写打开一个文本文件,允许读,或在文件末追加数据

"rb+"

读写打开一个二进制文件,允许读和写

"wb+"

读写打开或建立一个二进制文件,允许读和写

"ab+"

读写打开一个二进制文件,允许读,或在文件末追加数据

 

案例11.2  从文件中读数据

【项目任务】

从一个磁盘文件中读出若干数据。

【设计思路】

以读的方式打开一个磁盘文件;从文件上读数据,并将其写到计算机屏幕上,直到读完为止;最后关闭文件,从文件中读数据。

【程序代码】

#include <stdio.h>

main()

{

    FILE *fp;

    char ch;

    if((fp=fopen("c:\\in.dat","r"))==NULL)   /*以写的方式打开一个文件*/

    {

        printf("Can’t open this file.\n"); 

        exit(0);                             /*打开失败后,退出*/

    }

    while((ch=fgetc(fp))!=EOF)               /*判断文件是否结束*/

    {

        putchar(ch);

    }

    fclose(fp);

}

【运行结果】

文件in.dat中:

ABC

屏幕上显示:

ABC

【知识拓展】

1.在执行fgetc()函数读字符时,如果遇到文件结束符,则函数会返回一个文件结束标志EOF(其值为-1,在stdio.h中有定义),这是针对于文本文件。如果是二进制文件,可以使用feof()函数来进行测试,如果函数返回值为真,则表示文件结束;函数返回值为假,则表示文件没有结束。

2.在向计算机中输入文本文件时,将回车、换行符转换为换行符;在输出时,将换行符转换为回车符和换行符。在用二进制文件时,不进行这种转换。

3.以下是常见的文件读写函数,读者可以自行查阅TC 2.0的帮助手册,了解它们的用法。

·    fgetc( )fputc( ),用来处理字符数据。

ch=fgetc(fp);

fputc(ch,fp);

·    fgets( )fputs( ),用来处理字符串数据。

fgets(str,n,fp);

fputs("Hello",fp);

·    fread( )fwrite( ),一般用于二进制文件中数据的输入/输出。

fread(buffer,size,count,fp);

fwrite(buffer,size,count,fp);

·    输入时,要将ASCII码转换为二进制形式;输出时,又要将二进制转换成字符。

fprintf(fp,);  fprintf(fp,"%d",100);

fscanf(fp,);   fscanf(fp,"%d",&x);