fopen与fseek函数

 

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

 

 

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!!!\n");
                  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_CURSEEK_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\n", filesize(stream));

        fclose(stream);

        return (0);
}

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


 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值