fseekc语言(c语言:这两个语句什么意思 fseek(fp,0L,0); fprintf(fp,“%d\n“,a)

本文目录
- c语言:这两个语句什么意思 fseek(fp,0L,0); fprintf(fp,“%d\n“,a
- C语言文件问题fseek定位
- 在C语言中fseek()的功能
- C语言ab+方式打开文件以及fseek函数
- C语言中fseek函数的第2个和第3个参数的具体含义
- C语言中,fseek函数怎么控制移动的方向怎么往前或往后,最好能有个例子 谢谢!
- 在c语言中,fseek(fp,sizeof(int)*3,0)是什么意思
- 各位C语言的高手们,小弟我今天遇到一个fseek函数,不知道他在一下程序的含义是什么,还望各位不吝赐教啊
- c语言中的fseek函数如何定位到下一行
c语言:这两个语句什么意思 fseek(fp,0L,0); fprintf(fp,“%d\n“,a
fseek(fp,0L,0);应该是这样吧,总是为文件指针 指向文件的第一个位置。
fseek()函数
功能:移动文件位置指针到指定的位置
一般形式:fseek(文件指针,位移量,起始点);
其中位移量表示位置指针移动的字节数,要求为long类型,以便文件长度大于64KB时不会出错
起始点表示从何处开始计算位移量,规定有三种:文件开头0,当前位置1和文件结尾2
C语言文件问题fseek定位
我前几天也碰到fseek问题,体会颇深。
几点建议:
1、你打开的方式是什么?比如r还是rb?这两者差别特别大。
2、暂且不论r或rb,你这个文件从开头到10的位置是什么字符,空格?空行?ascii字符?或者其他?建议找个可以查看16进制的软件打开看看,比如ultraedit。然后再觉得偏移量是多少。
3、由于文件需要打开才能操作,检查一下路径和函数使用问题。如果是当前目录,那直接fp=fopen("我的bin","rb")或者
fp=fopen("我的bin","r"),再fseek(fp,10,0)。如果不是当前目录,记得目录符号"\"在c语言里头需要使用转义字符才能实现,也就是"\\"才能实现"\",比如fp=fopen("c:\\我的bin","rb")。
基本上以上三点可以解决fseek读不出内容的问题。
在C语言中fseek()的功能
fseek()是重定位流(数据流/文件)上的文件内部位置指针。
注意:文件指针指向文件/流。位置指针指向文件内部的字节位置,随着文件的读取会移动,文件指针如果不重新赋值将不会改变或指向别的文件。
如果执行成功,stream将指向以fromwhere为基准,偏移offset(指针偏移量)个字节的位置,函数返回0。如果执行失败(比如offset取值大于等于2*1024*1024*1024,即long的正数范围2G),则不改变stream指向的位置,函数返回一个非0值。
扩展资料:
注意事项
fseek函数的文件指针,应该为已经打开的文件。如果没有打开的文件,那么将会出现错误。 fseek函数也可以这样理解,相当于在文件当中定位。
这样在读取规律性存储文件时可以利用其OFFSET偏移量读取文件上任意的内容。
fseek函数一般用于二进制文件,也可以用于文本文件。用于文本文件操作时,需特别注意只有fseek(fp, 0, SEEK_SET) 和 fseek(fp, ftell(fp), SEEK_SET)能确保结果符合预期。
C语言ab+方式打开文件以及fseek函数
打开文件可以用fopen。
函数原型:FILE * fopen(const char * path,const char * mode);
返回值:文件顺利打开后,指向该流的文件指针就会被返回。如果文件打开失败则返回NULL,并把错误代码存在errno中。
一般而言,打开文件后会做一些文件读取或写入的动作,若打开文件失败,接下来的读写动作也无法顺利进行,所以一般在fopen()后作错误判断及处理。
打开文件实例:
#include《stdio.h》
#define F_PATH "d:\\myfile\\file.dat"
int main(void)
{
FILE*fp=NULL;//需要注意
fp=fopen(F_PATH,"ab+");
if(NULL==fp)
{
return -1;//要返回错误代码
}
fclose(fp);
fp=NULL;//需要指向空,否则会指向原打开文件地址
return 0;
}
fseek函数功能:重定位流(数据流/文件)上的文件内部位置指针
注意:文件指针指向文件/流。位置指针指向文件内部的字节位置,随着文件的读取会移动,文件指针如果不重新赋值将不会改变指向别的文件
int fseek(FILE *stream, long offset, int fromwhere);
参数:stream 文件指针,fromwhere起始基准点,offset在基准点的基础上的偏移量。
返回值:成功,返回0,失败返回-1,并设置errno的值,可以用perror()函数输出错误。
实例:
#include 《stdio.h》
long filesize(FILE*stream);
int main(void)
{
FILE *stream;
stream=fopen("MYFILE.TXT","w+");
fprintf(stream,"Thisisatest");
printf("FilesizeofMYFILE.TXTis%ldbytes\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;
}
C语言中fseek函数的第2个和第3个参数的具体含义
fseek函数:
int
fseek(fp,offset,base)
FILE
*fp;
long
offset;
int
base;
其中,第二个参数offset是位移量,第三个参数base是基准
函数的功能是
将fp所指向的文件位置指针移到以base所指出的位置为基准、以offset为位移量的位置
C语言中,fseek函数怎么控制移动的方向怎么往前或往后,最好能有个例子 谢谢!
fseek有三个参数,第1个是文件句柄,通过打开文件时得到;第2个就是移动的字节数,这个数可以是正的,就是向后(文件尾部)移动,也可以是负的,即向前(文件头部)移动;第3个参数指明从哪里移动,如果写SEEK_SET就是从文件头部移动多少字节,如果写SEEK_END则是从尾部开始移动,SEEK_CUR则是从当前位置移动。
比如
要将文件指针移动到文件开始的第24字节位置:fseek(fp,24,SEEK_SET);
移动到文件尾部向前50字节:fseek(fp,-50,SEEK_SET);
在当前位置移动8个字节(跳过8个字节数据):fseek(fp,8,SEEK_CUR);
在当前位置向前移动16个字节(准备重新读取数据):fseek(fp,-16,SEEK_CUR);
在c语言中,fseek(fp,sizeof(int)*3,0)是什么意思
int fseek(FILE *stream, long offset, int fromwhere);函数设置文件指针stream的位置。
如果执行成功,stream将指向以fromwhere为基准,偏移offset(指针偏移量)个字节的位置,函数返回0。如果执行失败(比如offset超过文件自身大小),则不改变stream指向的位置,函数返回一个非0值。
函数设置文件指针stream的位置。如果执行成功,stream将指向以fromwhere(偏移起始位置:文件头0(SEEK_SET),当前位置1(SEEK_CUR),文件尾2(SEEK_END))为基准,偏移offset(指针偏移量)个字节的位置。如果执行失败(比如offset超过文件自身大小),则不改变stream指向的位置。
fseek函数和lseek函数类似,但lseek返回的是一个off_t数值,而fseek返回的是一个整型。
所以,fseek(fp,sizeof(int)*3,0)函数将文件指针指向从文件开头,向后偏移3个int单元的地方。
各位C语言的高手们,小弟我今天遇到一个fseek函数,不知道他在一下程序的含义是什么,还望各位不吝赐教啊
fseek 用于二进制方式打开的文件,移动文件读写指针位置.
通常文件打开后,读写位置按先后顺序.但有时你想变动读写位置,例如重新从某处起,再读一次.
fseek有3个参数,函数原型:
int fseek( FILE *stream, long offset, int origin );
第一个是文件流,第3个是指针零点位置,第2个是把指针移动到的地点.
第3个参数取值等于下列3个之1
SEEK_CUR -- 1 为当前指针位置
SEEK_END -- 2 为文件尾
SEEK_SET -- 0 为文件起始
第2个参数为偏移量,字节数,长整型.
fseek(fp,i*sizeof(struct student),0); 把文件指针从文件头移动,i个结构体长度
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;
}

本文相关文章:
谭浩强c语言跟谁的课(学c语言看过了谭浩强的书后还看谁的好呢)
2025年10月28日 14:00
c语言怎么输入一个字符串(c语言如何只允许用户输入一个字符)
2025年10月25日 05:15
malloc函数的返回值类型(c语言中malloc是什么怎么用)
2025年10月25日 00:30
c语言中的RETURN()返回值是什么意思?sqrt函数奇数返回什么
2025年10月22日 08:00
二维数组4行4列怎么输出(c语言编程 将一个随机输入的4*4二维数组逆时针旋转90度后以4行4列输出)
2025年10月21日 02:30
如何编写程序计算圆的周长和面积(用c语言怎么编写求圆的周长和面积的程序)
2025年10月20日 18:30
c程序设计谭浩强第五版第七章课后答案(疑问:谭浩强c语言习题7.10答案)
2025年10月20日 17:30
更多文章:
ajax提交form表单数据到servlet(HTML与Servlet的连接)
2025年12月7日 10:30
批量转换ascii(如何把txt 批量从utf8转换为ascii,最好有工具)
2025年11月18日 04:30
postgresql 创建用户(postgresql如何用新创建的用户登录呢)
2026年1月28日 16:30
工程师一个月能赚多少钱(造价工程师一般月收入是多少 需求量大吗)
2026年7月4日 11:00
delphi led扩展屏显示开发(用DELPHI模拟LED屏下的那种文字特效怎么做)
2025年12月17日 14:30
download是什么意思可以删除吗(Download什么意思,Download的文件夹能删了吗,)
2026年7月27日 03:15
trousers后面单复数(The+trousers用不用三单)
2026年5月7日 03:00
linux是自由软件吗(Linux是自由软件,什么是自由软件,它包含哪些含义)
2026年4月14日 08:15
springmvc答辩问题(我的毕业设计是JSP+mysql+Tomcat搭建的一个管理系统,答辩老师问我是怎么设计的,我应该)
2025年11月16日 05:00













