牛骨文教育服务平台(让学习变的简单)
博文笔记

fopen与fseek函数

创建时间:2013-05-05 投稿人: 浏览次数:1109

 

说明:只供学习交流,装载请注明出处

 

 

fopen函数

 

头文件

#include <stdio.h>

函数原型

FILE *fopen(const char *path, const char  *mode)

返回值

成功

失败

是否设置errno

返回文件指针

NULL

 

参数说明:

path:欲打开的文件路径与文件名。

mode:打开方式,可以取如下的值:

“r”:以只读方式打开文件。

“r+“:以可读可写方式打开文件。

“w“:以只写方式打开文件,若文件不存在则建立该文件。

“w+“:以可读可写方式打开文件,若文件不存在则建立该文件。

“a“:以追加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。

“a+“:以追加的方式打开可读写的方式。若文件不存在,则会建立该文件,文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。

实例:

  
#include <stdio.h>
   
   int main(void)
   {
           FILE *fp = NULL;
   
           fp = fopen("new", "a+");
           if ( fp == NULL )
           {
                  printf("Open Failure!!!
");
                  return (1);
          }
  
          fclose(fp);
  
          return (0);
  }
     


 

fseek函数:

函数功能:移动文件流的读写位置。

 

头文件

#include <stdio.h>

函数原型

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

返回值

成功

失败

是否设置errno

0

-1

 

参数说明:

stream:文件指针。

offset:偏移量,正数表示正向偏移,负数表示负向偏移。

origin:设定从文件的哪里开始偏移,可能取值为:

SEEK_SET:文件开头。

SEEK_CUR:当前位置。

SEEK_END:文件结尾。

其中SEEK_SET,SEEK_CUR和SEEK_END依次为0,1,2.

 

fseek一般和ftell函数配合使用,ftell函数返回当前的位置距文件头的偏移字节数。

 

实例:

#include <stdio.h>

long filesize(FILE *stream)
{
        long curpos;
        long length;

        curpos = ftell(stream);
        fseek(stream, 0L, SEEK_END);
        length = ftell(stream);
        fseek(stream, curpos, SEEK_SET);

        return (length);
}

int main(void)
{
        FILE *stream = NULL;
        stream = fopen("MYFILE.TXT", "w+");
        fprintf(stream, "This is a test");

        printf("Filesize of MYFILE.TXT is %ld bytes
", filesize(stream));

        fclose(stream);

        return (0);
}

运行结果:
[root@localhost test]# ./fseek 
Filesize of MYFILE.TXT is 14 bytes
[root@localhost test]#


 

 

 

 

 

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。