文件流:"fopen","fclose",“ftell”"fseek","fgets","fprintf&qu

Posted 唯一诺

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文件流:"fopen","fclose",“ftell”"fseek","fgets","fprintf&qu相关的知识,希望对你有一定的参考价值。

char const* filename="D:/hello.txt";

"fopen",

  FILE *fp=fopen(char const *name,char const mode);

  e.g:FILE *fp = fopen(filename,"wb");

  打开文件流,name为要打开文件的路径,如这里的filename;mode 为对文件的操作模式,通常使用:“wb”(写操作),“rb”(读操作);

  如果打开文件成功返回一个指向FILE结构的指针;否则,返回一个NULL指针;

"fclose",

  fclose(FILE* name);

  关闭文件流,name 为之前打开的文件指针,如这里的filename;

  如果执行成功返回0,否则返回EOF;

  e.g: fclose(fp);

"ftell",

  long ftell(FILE *stream);

  表示返回下一个读取或者写入将要开始的位置距离文件起始位置的偏移量。

  e.g:

    fseek(fp,5,SEEK_SET);
   int i = ftell(fp);    //这里i=5;

"fseek",

  int  fseek(FILE *stream, long offset, int from);

  表示对将要写入的位置的定位;

  stream为打开的文件指针,filename;

  offset为距离from参数的相对距离;

  from为定位的基准;模式为:SEEK_SET(从流的起始位置起,往后offset个字节)

               SEEK_CUR(从流的当前位置起,往前往后offset个字节)

               SEEK_END(从流的末尾起,往前往后offset个字节)

  e.g:

      fseek(fp,-5,SEEK_END);

      fread(buf,1,4,fp);

"fgets",

  char *fgets( char  *buffer, int  buffer_size, FILE*  stream);

  从指定的stream读取字符,并复制到buffer中。当读取到一个换行符号“\n”并存储到缓冲区之后就不在读取;如果缓冲区内存储的字符数达到buffer_size-1个时,同样停止读取。

  下次调用fgets将从流的下一个字符开始读取。在任何一个情况下,一个NUL字节降被添加到缓冲区所存储数据的末尾,使之成为一个字符串;

  如果失败,fgets返回一个NULL指针;否则返它的第一个参数(指向缓冲区的指针);

  e.g:

    char* ret = fgets(buf,512,fp);  //成功,则返回buf指针;

"fprintf",

  int fprintf(FILE *stream,char const *format,......)    // 将数据转换成字符串文本,并写入stream文件中;

    等于:

    char buf[512];

    sprintf(buf,"%s\n",fp);

    fwrite(buf,1,strlen(line),fp);

  e.g :  fprintf(fp, "%s\n", buf);

"fwrite",

  size_t  fwrite(const void* buffer, size_t  size, size_t  count, FILE* stream);

  size 恒为1;

  将buffer中的 count个字节写入到文件steam中;

  e.g:

  fwrite(buf,1,4,fp);

"fread",

  size_t    fread(const void* buffer,size_t size, size_t count ,FILE *stream)

         size恒为1;  从stream文件中读取count个字节存放buffer中;

  返回值为:实际读取到的字节个数;

  e.g:

    fread(buf,1,4,fp);

"feof",

  int feof(FILE *stream);

  如果流当前处于文件尾,feof函数返回真。

  e.g:

    while (!feof(fp))
    {

      char* ret = fgets(buf, 512, fp);
      if (ret)
      {
        printf("got::%s", ret);
      }
    }

  

 

以上是关于文件流:"fopen","fclose",“ftell”"fseek","fgets","fprintf&qu的主要内容,如果未能解决你的问题,请参考以下文章

php fopen函数报错failed to open stream 未能打开流

fopen和fclose函数的返回值是多少?

如何用C语言读写文件

如何用C语言文件操作修改指定文件

两次fopen结果不同,怎么判断文件指针冲突?

c语言fopen函数 fp=fopen(" /","r") fopen 函数怎么样打开url 文件 比如 http://10.4.64.