黑马程序员技术交流社区

标题: c文件操作 [打印本页]

作者: 阿杰1314    时间: 2015-10-28 00:16
标题: c文件操作

文件操作有以下几个内容:

  1.将数据从内存输出到文件上,也称“写”文件。

  2.将数据从文件输入到内存,也称“读”文件。

一.怎样进行文件操作:

  1.设立文件指针

     进行文件操作时,必须在程序一开始就先定义文件指针。
         
     FILE *指针类型变量
  2.打开文件

     将文件指针与磁盘上的文件建立联系,以后对文件的所有操作都将通过文件指针来进行
   
          fopen(文件名, 使用文件方式)

          比如: fp = fopen("A.TXT","r");

      其中A.TXT表示将要访问的是当前盘当前路径下名为A.TXT的文件。
      
      fopen()函数调用成功,表示在指定的磁盘位置找到文件A.TXT,这时将带回指向A.TXT文件的指针并赋给 fp,这样fp就和文件A.TXT建立了联系。
     
      如果文件打开不成功,fopen()函数将返回一个空指针NULL,为了避免使用空指针,应该按下面的程序段 的书写形式输出失败信息:
  if( fp=fopen("A.TXT","r") == NULL)
     {
         printf("can't find this file!/n");
   exit(0);
     }

文件使用方式    含义

"r"(只读)       为输入打开一个文本文件。若指定的文件不存在,则会出错

"w"(只写)       为输出打开一个文本文件。若文件不存在,系统将用指定名建立一个新文件;若文件已经存            在,则将从起始位置重新写,原有内容被更新

"rb"(只读)      为输入打开一个二进制文件。功能与"r"相同

"wb"(只写)      为输出打开一个二进制文件。功能与"w"相同

"a"(追加)       为追加数据打开一个文本文件。若文件不存在,系统将用指定名建立一个新文件;若文件已  经存在,则新数据写在原有内容之后

"ab"(追加)      为追加数据打开一个二进制文件。其余功能与"a"相同

"r+"(读写)      为读/写打开一个已存在文本文件。既可读,也可写,读写总是从文件的起始位置开始;更换  读写操作时不必关闭文件

"rb+"(读写)     为读/写打开一个已存在的二进制文件。功能与"r+"相同。可由位置函数设置读写的起始位置

"w+"(读写)      为读/写建立一个新的文本文件。若文件已存在,原有内容将被更新

"wb+"(读写)     为读/写建立一个新的二进制文件。功能与"w+"相同;可由位置函数设置读写起始位置

"a+"(读写)      为读/写打开一个文本文件。功能与"a"相同,只是在文件尾部添加新数据后,可以从头开始  读

"ab+"(读写)     为读/写打开一个二进制文件。功能与"a+"相同,只是在文件尾部添加新数据之后,可由位置  函数设置开始读的起始位置

-------------------------------------------------------------------------------------------------

二.读、写数据:

  读写数据将通过调用标准输入输出函数来完成。这些函数主要包括:
  (1)fgetc()和getc():从制定文件中一次读取一个字符
       fputc()和putc():一次输出一个字符到指定文件  
  (2)fgets():从指定文件中一次读取一个字符串
       fputs():一次输出一个字符串到指定文件
  (3)fread():从指定文件中一次读取一个数据块
       fwrite():一次输出一个数据块到指定文件
  (4)fscanf():从指定文件中按格式读取数据
       fprintf():按指定格式将数据输出到指定文件中

  文件定位函数,使“读写位置指针”直接指向指定的读写位置:
  fseek():可移动位置指针到指定位置上
  ftell():可获得当前位置指针的位置
  rewind():“反绕”函数,可使位置指针回到文件的开头

三.关闭文件

   当 读、写操作完成之后,必须先将先将文件关闭

       fclose(文件指针)

   函数调用成功后返回0,否则返回非0值

---------------------------------------------------------------------------------------------------------------------------------------------

怎样向文本文件写入单个字符:
#include <stdio.h>
main()
{
   FILE  *fpc;    //定义文件指针
   char  ch;
   if( (fpc = fopen("A1.TXT","w")) == NULL )  //文件打开不成功就退出程序的执行
      {
         printf("can't open this file!!/n");
         exit(0);
       }
   ch = getchar();
   while( ch != '@')
       {
         fputc(ch, fpc);
         ch = getchar();
        }
  fclose(fpc);
}
上例表达式fopen("A1.TXT","w")是:  为“只写”而打开一个名为"A1.TXT"的文本文件,程序执行后,如果当前目录下没有名字为A1.TXT的文件,系统将在该目录下新建;如果已经存在,则从文件的其始位置重新写,文件中所有原有内容全部更新。

----------------------------------------------------------------------------------------------------------------------------------------------

5.向文本文件写入字符串
#include <stdio.h>
main()
{
  FILE    *fps;
  char    str[8];
  if( (fps=fopen("A2.TXT","a")) == NULL)
    {
      printf("can't open this file!/n");
      exit(0);  
    }
  while( strlen( gets(str)>0 )
    {
      fputs(str,fps);
      fputs("/n",fps);
    }
  fclose(fps);
  printf("/n");
}

----------------------------------------------------------------------------------------------------------------------------------------------

4.从文本文件中读取单个字符
#include <stdio.h>
main()
{
  FILE    *fpc;
  char    ch;
  if( (fpc=fopen("A1.TXT","r")) == NULL)
    {
      printf("can't open this file!/n");
      exit(0);
    }
  ch = fgetc(fpc);
  while( ch!=EOF)
    {
      putchar(ch);
      ch = fgetc(fpc);
    }
  fclose(fpc);
  putchar("/n");
}

文件函数

函数名    函数原型说明      功能                  返回值
fopen   FILE  *fopen(char         以mode指定的方式打开名  成功返回文件指针(文件
          *filename,                为filename的文件   信息区的其始地址),否则
          char *mode);       返回NULL

例:

fclose    int fcolse(FILE  *fp);    关闭fp所指的文件,释放文件缓冲区    出错返回非0,否则返回0








欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2