如何设置将文件当前读写位置 C语言

如何设置将文件当前读写位置 C语言,第1张

可以使用fseek。

功能

重定位流(数据流/文件)上的文件内部位置指针

注意:不是定位文件指针,文件指针指向文件/流。位置指针指向文件内部的字节位置,随着文件的读取会移动,文件指针如果不重新赋值将不会改变指向别的文件。

实例

 #include <stdio.h>

long filesize(FILE *stream)

int main(void)

{

FILE *stream

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

}

long filesize(FILE *stream)

{

long curpos, length

curpos = ftell(stream)

fseek(stream, 0L, SEEK_END)

length = ftell(stream)

fseek(stream, curpos, SEEK_SET)

return length

}

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

第一个参数stream为文件指针

第二个参数offset为偏移量,正数表示正向偏移,负数表示负向偏移

第三个参数origin设定从文件的哪里开始偏移,可能取值为:SEEK_CUR、 SEEK_END 或 SEEK_SET

SEEK_SET: 文件开头

SEEK_CUR: 当前位置

SEEK_END: 文件结尾

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

简言之:

fseek(fp,100L,0)把文件内部指针移动到离文件开头100字节处;

fseek(fp,100L,1)把文件内部指针移动到离文件当前位置100字节处;

fseek(fp,-100L,2)把文件内部指针退回到离文件结尾100字节处。

用fgets

一行行读入,读到EOF结束。

每读一行用

下面函数找到address

后面方括号

i1,i2

位置

void

f1(char

*str,

int

*i1,

int

*i2){

int

i,j=0,L

L

=

strlen(str)

if

(L

<

8)

{

printf("no

address

line\n")

*i1=0

*i2=0}

for

(i=0i<Li++){

if

(

strncmp(str+i,"address",7)==0)

{j=i+7

break}

}

for

(i=ji<Li++){

if

(str[i]=='[')

*i1=i

if

(str[i]==']')

{

*i2=i

break}

}

}

从这行字符串中取出地址

str[i1+1]

str[i2-1],

写入文件。

调用例子:

main()

{

char

str[400]=".......address..[123

bay

street

Apt.

5]

abcdb

ssks

567

"

char

add[80]

int

i,j,i1,i2

f1(&str[0],&i1,&i2)

printf("%d

%d",i1,i2)

for

(i=i1+1i<i2i++)

{

j=i-i1-1

add[j]=str[i]}

add[j+1]='\0'

printf("%s

",add)

return

0

}

定义一个fstream类变量infile.

....

输入文件 *** 作:

infile.seekg(100)//输入文件的指针向前移到100字节位置。原型seekg(文件中的位置)

infile.seekg(-50,ios::cur)//输入文件中的指针从当前位置后移50个字节。

//原型,seekg(位移量,参照位置)

参照位置

ios::beg,文件开头,默认值 。

ios::cur 指针当前位置

ios::end文件末尾

....

输出文件 *** 作:

infile.seekp(-75,ios::end)//输出文件中的指针从文件尾后移50个字节。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12085596.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-20
下一篇2023-05-20

发表评论

登录后才能评论

评论列表(0条)

    保存