1. c语言fseek

函数名称
fseek

包含头文件
stdio.h

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

格式
intfseek(FILE *stream, long offset, intfromwhere);

参数
fseek position the file(文件)position(位置)pointer(
指针)for the file referenced by stream to the byte location calculated by offset.
stream:文件流
offset:偏移量
fromwhere:起始位置
SEEK_SET:文件开头
SEEK_CUR:当前位置
SEEK_END:文件结尾

返回值
成功,返回0,失败返回-1,并设置errno的值,可以用perror()函数输出错误。

2. C语言关于fseek函数。

中文文件要用TCHAR之类的多字节方法处理。
你的方法是把中文看成2进制一个字符一个字符的数据文件来处理,也是可以的,fseek工作完全正常,
问题是输出字符的显示,你可以显示每个字节的值,但不能显示成肉眼可识别的汉字。
putchar ( ch ); 可用于 ASCII字符。
你可以换成: printf("%02x ", 0xff & ch ); 可以显示单个字节的码值。从输出的码值可以看出,程序没有问题,只是不能显示成肉眼可识别的汉字。
另外,如果是unicode中文文件,则文件头有不可见的文件类型区分码0xfe 0xff 或 0xff 0xfe 等等。
2个单个字节码,合成一个双字节码,有大端和小端文件问题,也许需要互相交换相邻2个字节,再显示成中文。

3. C语言 文件指针 fseek

fptr = fopen(roominfo, "rb+"); //你的文件是以读写方式打开的
当一个文件以读写方式打开,从专读文件切换到写文件或者相反操作属,必须刷新文件缓冲区(就是把文件的修改写入磁盘),而fseek操作会引发文件缓冲区的刷新。在你的代码里fwrite以后,下次判断是fread,所以如果不刷新文件缓冲区,fread不会读取到写入的数据,而fseek(fptr, 0,SEEK_CUR);就是在不移动文件指针的情况下,把缓冲区数据写入文件,保证fread会读取到新数据,这是常用手段

4. C语言中frewind, fseek, ftell怎么用

rewind就是把当前文件指针移动到文件开始,fseek文件定位,ftell返回文件当前指针。
如rewind(fp);fp为文件指针意思是把指针回到文件开始;fseek(fp,nL,1)这个有三种情况0表示文件开始,1表示当前位置,2表示文件末尾,nL表示指针位移量可以为负;ftell(fp)返回文件当前的指针

5. C语言fseek 问题

#include<stdio.h>

intmain(void){
FILE*stream;
intc,n=0,filesize;
stream=fopen("MYFILE.TXT","wt");
fprintf(stream,"Thisisatest ");
fclose(stream);
stream=fopen("MYFILE.TXT","r+");
while(n<4){
filesize=0;
while((c=fgetc(stream))!=EOF){
printf("%c",c);
++filesize;
}
fseek(stream,-(++filesize),SEEK_CUR);
fseek(stream,0,SEEK_CUR);
++n;
}
fclose(stream);
return0;
}

*****fseek(stream,0,SEEK_CUR); *****

这一句很重要(专家说的),用来改变文件的读状态(我也不明白这个状态),在修改数据文件时,这一句貌似废话的话所起的作用更是重要了。

6. c语言的fseek()

p是一个指针吧 fwrite(p,sizeof(linklist),1,fp)如果结构体内也有指针 那就没法保存。你保存的只是当时指针的地址。

7. C语言 文件 fseek

严格意义来说,fseek是操作二进制文件的。
如果你是想从文件文件读取一行,建议及用fgets函数。
读取到数组,再提取数据a、b、c,然后扔掉d

8. c语言中的fseek函数如何定位到下一行

fseek本身无法定位下一行。
但是可以通过自定义函数来处理。

#include <stdio.h>

int getNextLinePos(FILE *p)
{
int ch;
int curpos = 0;

ch=getc(p);
curpos = ftell(p);
while(ch!=EOF)
{
putchar(ch);
ch=getc(p);
if(ch == '\n')
{
break;
}
}

return (ftell(p) - curpos + 1);
}

int main(void)
{
FILE *fp;

fp=fopen("FileDemo.tt","r");
if (fp==NULL)
{
printf("I can't open file!\n");
return 0;
}

fseek(fp, getNextLinePos(fp), SEEK_SET); // 指向下一行

return 0;
}

9. 在C语言中fseek()的功能

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

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

如果执行成功,stream将指向以fromwhere为基准,偏移offset(指针偏移量)个字节的位置,函数返回0。如果执行失败(比如offset取值大于等于2*1024*1024*1024,即long的正数范围2G),则不改变stream指向的位置,函数返回一个非0值。



(9)fseekc语言扩展阅读:

注意事项

fseek函数的文件指针,应该为已经打开的文件。如果没有打开的文件,那么将会出现错误。 fseek函数也可以这样理解,相当于在文件当中定位。

这样在读取规律性存储文件时可以利用其OFFSET偏移量读取文件上任意的内容。

fseek函数一般用于二进制文件,也可以用于文本文件。用于文本文件操作时,需特别注意只有fseek(fp, 0, SEEK_SET) 和 fseek(fp, ftell(fp), SEEK_SET)能确保结果符合预期。


10. c语言fseek问题

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字节处。