fseek的使用

一:概述

  在官方文档里,对于fseek的描述是

    Move to specified position in file,移到文件的某一个特殊位置

二:语法

  status = fseek(fileID, offset, origin)

  fileID的意思是fopen打开时产生的整数标识,大于0时,表示文件成功打开。

  在文件中,offset是,相对于起始origin的位置开始移动的整数

  origin有三种状态,bof,cof,eof,其分别表示文件的开始位置,当前位置,和末尾位置。

  如果操作成功,则状态返回0,否则返回为-1.

三:举例,方便加深理解

  要求:Copy 5 bytes from the file test1.dat, startingat the tenth byte, and append to the end of test2.dat

  解析:有两个文件,test1.dat,test2.dat

      在文件test1.dat的第10个位置,复制5个byte到test2.dat的末尾处。

  程序:

    % Create files test1.dat and test2.dat
    % Each character uses 8 bits (1 byte)

    %open test1 and type is w+,then write char

    fid1 = fopen(‘test1.dat‘, ‘w+‘);
    fwrite(fid1, ‘ABCDEFGHIJKLMNOPQRSTUVWXYZ‘);

    %open test2 and type is w+,then write char

    fid2 = fopen(‘test2.dat‘, ‘w+‘);
    fwrite(fid2, ‘Second File‘);

    % Seek to the 10th byte (‘J‘), read 5
    fseek(fid1, 9, ‘bof‘);
    A = fread(fid1, 5, ‘uint8=>char‘);%%%%%%%%%%fread
    fclose(fid1);

    % Append to test2.dat
    fseek(fid2, 0, ‘eof‘);
    fwrite(fid2, A);%%%%%%%%%%%%%%%%%%fwrite
    fclose(fid2);

四:综述

  通过fid找到操作的文件,然后找到文件要操作的具体位置

时间: 2024-10-15 00:58:50

fseek的使用的相关文章

文件流:"fopen","fclose",“ftell”"fseek","fgets","fprintf" ,“feof”,"fwrite","fread"

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"(读操作)

php使用file函数、fseek函数读取大文件效率分析

php读取大文件可以使用file函数和fseek函数,但是二者之间效率可能存在差异,本文章向大家介绍php file函数与fseek函数实现大文件读取效率对比分析,需要的朋友可以参考一下. 1. 直接采用file函数来操作 由于 file函数是一次性将所有内容读入内存,而PHP为了防止一些写的比较糟糕的程序占用太多的内存而导致系统内存不足,使服务器出现宕机,所以默认情况下限制只能最大使用内存16M,这是通过php.ini里的 memory_limit = 16M 来进行设置,这个值如果设置-1,

8.6 文件IO fflush fseek ftell rewind feof ferror

fprintf()  . sprintf. snprintf : int fprintf(FILE *stream, const char *format, ...); int sprintf(char *str, const char *format, ...); int snprintf(char *str, size_t size, const char *format, ...); #include <stdio.h> int main() { FILE * fp = fopen(&q

用fseek和ftell获取文件的大小

#include <stdio.h> #include <stdlib.h> #include <unistd.h> int main(int argc,char *argv[]) { int n=0; FILE *fp; if((fp=fopen(argv[1],"r"))==NULL) { perror("fopen"); exit(EXIT_FAILURE); } if(fseek(fp,0,SEEK_END)!=0) {

lseek()函数与fseek()函数详解

C语言lseek()函数:移动文件的读写位置 头文件:  #include <sys/types.h>  #include <unistd.h> 定义函数: off_t lseek(int fildes, off_t offset, int whence); 函数说明: 每一个已打开的文件都有一个读写位置, 当打开文件时通常其读写位置是指向文件开头, 若是以附加的方式打开文件(如O_APPEND), 则读写位置会指向文件尾. 当read()或write()时, 读写位置会随之增加,

文件操作:fseek()

int fseek(FILE *stream, long offset, int fromwhere); fseek 用于二进制方式打开的文件,移动文件读写指针位置. int fseek( FILE *stream, long offset, int origin ); 第一个参数stream为文件指针第二个参数offset为偏移量,整数表示正向偏移,负数表示负向偏移第三个参数origin设定从文件的哪里开始偏移,可能取值为:SEEK_CUR. SEEK_END 或 SEEK_SETSEEK_S

文件内容操作篇clearerr fclose fdopen feof fflush fgetc fgets fileno fopen fputc fputs fread freopen fseek ftell fwrite getc getchar gets

clearerr(清除文件流的错误旗标) 相关函数 feof 表头文件 #include<stdio.h> 定义函数 void clearerr(FILE * stream); 函数说明 clearerr()清除参数stream指定的文件流所使用的错误旗标. 返回值 fclose(关闭文件) 相关函数 close,fflush,fopen,setbuf 表头文件 #include<stdio.h> 定义函数 int fclose(FILE * stream); 函数说明 fclos

关于fseek和文件&quot;ab+&quot;打开方式的问题

这是在写一个文件的的时候发生的一个错误,代码如下 1 #include<stdio.h> 2 #include <errno.h> 3 #include <string.h> 4 5 int main(){ 6 FILE * fp; 7 8 char t = 1; 9 for (int i = 1; i <= 100; i++) 10 { 11 fp = fopen("test.txt" , "ab"); 12 t = i;

php读取超大文件fseek

function readMaxFile($fp , $start = 0) { $tag = "\n"; $i = 0; $content = ''; while($i < 20) { if (feof($fp)) { return 0; } fseek($fp, $start, SEEK_SET); $res = fread($fp, 1); $content .= $res; if (substr($content, -strlen($tag)) == $tag) { $i

随机存取:fseek(),ftell()

fseek(fp,offset,pos): 文件指针定位,fp指向被打开的文件,offset为相对当前pos位置的偏移量,正数表示 向文件尾部偏移,负数表示向文件头部偏移.pos有三种状态, 分别为SEEK_SET(0)文件开始;SEEK_CUR(1)当前位置;SEEK_END(2)文件结尾. 返回值:正常返回值为0,异常返回值为-1,例如试图移动超出文件范围(若试图超出 文件结尾,则始终停留在文件结尾,返回值依然为0,只有试图超出文件开始处时, 才返回-1) ftell(FILE* fp) :