第十章:对文件的输入输出

来源:互联网 发布:安卓汉化软件 编辑:程序博客网 时间:2024/05/20 05:04

C语言输入输出函数

      1. fopen()函数 
      fopen函数用于打开文件, 其调用格式为: 
       FILE *fopen(char *filename, *type); 
      在介绍这个函数之;前, 先了解一下下面的知识。 
      (1) 流(stream)和文件(file) 
      流和文件 在Turbo C2.0中是有区别的, Turbo C2.0 为编程者和被访问的设 
备之间提供了一层抽象的东西, 称之为"流", 而将具体的实际设备叫做文件。 
流是一个逻辑设备, 具有相同的行为。因此, 用来进行磁盘文件写的函数也同样 
可以用来进行打印机的写入。在Turbo C2.0中有两种性质的流:     文字流( text 
stream)和二进制(binary stream)。对磁盘来说就是文本文件和二进制文件。本 
软件为了便于让读者易理解Turbo C2.0语言而没有对流和文件作特别区分。 
      (2) 文件指针FILE 
      实际上FILE是一个新的数据类型。它是Turbo C2.0的基本数据类型的集合, 
称之为结构指针。有关结构的概念将在第四节中详细介绍, 这里只要将FILE理解 
为一个包括了文件管理有关信息的数据结构, 即在打开文件时必须先定义一个文 
件指针。 
      (3) 以后介绍的函数调用格式将直接写出形式参数的数据类型和函数返回值 
的数据类型。例如: 上面打开文件的函数, 返回一个文件指针, 其中形式参数有 
两个, 均为字符型变量(字符串数组或字符串指针)。
      现在再来看打开文件函数的用法。 
      fopen()函数中第一个形式参数表示文件名, 可以包含路径和文件名两部分。 

       "B:TEST.DAT" 
       "C:\\TC\\TEST.DAT" 
      如果将路径写成"C:\TC\TEST.DAT"是不正确的, 这一点要特别注意。 
      第二个形式参数表示打开文件的类型。关于文件类型的规定参见下表。 
                         表    文件操作类型 
      ━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 
            字符                  含义 
      ──────────────────────────── 
             "r"             打开文字文件只读 
             "w"             创建文字文件只写 
             "a"             增补, 如果文件不存在则创建一个 
             "r+"            打开一个文字文件读/写 
             "w+"            创建一个文字文件读/写 
             "a+"            打开或创建一个文件增补 
             "b"             二进制文件(可以和上面每一项合用) 
             "t"             文这文件(默认项) 
      ━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 
      如果要打开一个CCDOS子目录中, 文件名为CLIB的二进制文件, 可写成: 
       fopen("c:\\ccdos\\clib", "rb"); 
      如果成功的打开一个文件, fopen()函数返回文件指针,否则返回空指针(NULL)。由此可判断文件打开是否成功。

      2. fclose()函数 
      fclose()函数用来关闭一个由fopen()函数打开的文件 , 其调用格式为: 
        int fclose(FILE *stream); 
      该函数返回一个整型数。当文件关闭成功时, 返回0, 否则返回一个非零值。 
可以根据函数的返回值判断文件是否关闭成功。

有关文件操作的函数 
      本节所涉及到的文件读写函数均是指顺序读写,即读写了一条信息后,指针自动 
1。下面分别介绍写操作函数和读操作函数。 

      1. 文件的顺序写函数 
  fprintf()、fputs()和fputc()函数 均为文件的顺序写操作函数,其调用格式如下: 
      int fprintf(FILE *stream, char *format, ); 
      int fputs(char *string, FILE *steam); 
      int fputc(int ch, FILE *steam); 
      上述三个函数的返回值均为整型量

fprintf() 函数的返回值为实际写入文件中的字符个数(字节数)。如果写错误, 则返回一个负数

fputs()函数返回0时表明将string指针所指的字符串写入文件中的操作成功, 返回非0,表明写操作失败。

fputc()函数返回一个向文件所写字符的值, 此时写操作成功,否则返回EOF(文件结束结束其值为-1, 在stdio.h中定义)表示写操作错误。 
fprintf( ) 函数中格式化的规定与printf( ) 函数相同,所不同的只是fprintf()函数是向文件中写入。而printf()是向屏幕输出。 
      下面介绍一个例子, 运行后产后一个test.dat的文件。 
      例11: 
       #include 
       main() 
       { 
            char *s="That's good news");     
            int i=617;                       
            FILE *fp;                        
            fp=fopen("test.dat", "w");       
            fputs("Your score of TOEFLis", fp); 
            fputc(':', fp);                  
            fprintf(fp, "%d\n", i);          
            fprintf(fp, "%s", s);            
            fclose(fp);                      
       } 
      用DOS的TYPE命令显示TEST.DAT的内容如下所示: 
      屏幕显示 
        Your score of TOEFL is: 617 
        That's good news 
  如果感兴趣的话可以去网上寻找更全面的资料进行了解。

 

原创粉丝点击