⑴ c语言,怎么定位到文件第几个字符串,亲们
long _lseek(
int fd,
long offset,
int origin
);
例如, lseek(fd, 4, SEEK_SET),定位到文件第4个字节。
⑵ 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语言中如何得到当前文件所在位置
如果是通过open方式打开的,那么第一个参数就是文件路径信息:
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int open(const char *path, int oflag, /* mode_t mode */...);
如果是通过fopen方式打开的,那么第一个参数就是文件路径信息:
#include <stdio.h>
FILE *fopen(const char *filename, const char *mode);
无论通过open还是fopen打开文件,都必须先知道文件路径信息,尽管可能是相对路径。
如果知道了filename的内容,我们就可以定位它的绝对路径,也就是你说的完全路径。
1. filename本身就是绝对路径,ok。
2. filename是相对路径,那么先通过getcwd获取进程的执行路径,然后再获取绝对路径即可。
#include <unistd.h>
extern char *getcwd(char *buf, size_t size);
但是,如果进程在打开文件后又执行了chdir、fchdir之类函数的话,估计就不能够再获取文件路径信息了。
#include <unistd.h>
int chdir(const char *path);
int fchdir(int fildes);
⑷ C语言中文本文件定位用什么函数
c语言的文件定位是fseek函数fseek(文件指针,位偏移,起始点);起始点c提供了文件开始
文件当前位置
文件末尾三个值分别对应0
1
2,位偏移是只偏移多少个字节而不是几行c语言貌似不支持以行的形式移动指针
例:fseek(fp,100L,0);将位置指针移到离文件头100个字节处
如果第二个参数是负数的就是后退多少字节
⑸ c语言将文件指针定位到文件倒数第一行的第一个字节处
#include <stdio.h>
void main( void )
{
char ch;
long position;
FILE *fp = fopen("test.txt","r") ;
if(fp==NULL)
{
puts("cannot open file");
return;
}
while(!feof(fp))
{
ch = fgetc(fp);
//记录换行后第一个字节处的位置
if(ch=='\n' ||ch=='\r')
position = ftell(fp);
}
fseek(fp, position,SEEK_SET); //定位
//从倒数第一行的第一个字节处开始输出文件内容
while(!feof(fp))
putchar( fgetc(fp) );
fclose(fp);
}
⑹ c语言将文件指针定位到文件倒数第一行的第一个字节处
#include
<stdio.h>
void
main(
void
)
{
char
ch;
long
position;
FILE
*fp
=
fopen("test.txt","r")
;
if(fp==NULL)
{
puts("cannot
open
file");
return;
}
while(!feof(fp))
{
ch
=
fgetc(fp);
//记录换行后第一个字节处的位置
if(ch=='\n'
||ch=='\r')
position
=
ftell(fp);
}
fseek(fp,
position,SEEK_SET);
//定位
//从倒数第一行的第一个字节处开始输出文件内容
while(!feof(fp))
putchar(
fgetc(fp)
);
fclose(fp);
}
⑺ C语言中文件指针怎样向前移动一个字节
你是用C标准I/O库函数的话,
(1)文件定位:
文件定位指读取或设置文件当前读写点,所有的通过文件指针读写数据的函数,都是从文件的当前读写点读写数据的。
常用的函数有:
#include
<stdio.h>
int
fseek(FILE
*stream,
long
offset,
int
whence);
fseek
设置当前读写点到
offset
处,
whence
可以是
SEEK_SET,SEEK_CUR,SEEK_END,这些值决定是
从文件头、当前点和文件尾计算偏移量
offset.
你可以定义一个文件指针FILE
*fp,当你打开一个文件时,文件指针指向开头,
你要指到多少个字节,只要控制偏移量就好,例如
相对当前位置往后移动一个字节:fseek(fp,1,SEEK_CUR);中间的值就是偏移量。
如果你要往前移动一个字节,直接改为负值就可以:fseek(fp,-1,SEEK_CUR)
⑻ C语言中如何定位文件txt的光标
1、使用fseek函数即可更改文件指针的位置。
函数名:
fseek
功
能:
重定位流上的文件指针
用
法:
int
fseek(FILE
*stream,
long
offset,
int
fromwhere);
描
述:
函数设置文件指针stream的位置。如果执行成功,stream将指向以fromwhere为基准,偏移offset个字节的位置。如果执行失败(比如offset超过文件自身大小),则不改变stream指向的位置。
返回值:
成功,返回0,否则返回其他值。
2、例子:
fseek(fp,100L,0);//把文件内部指针移动到离文件开头100字节处;
fseek(fp,100L,1);//把文件内部指针移动到离文件当前位置100字节处;
fseek(fp,-100L,2);//把文件内部指针退回到离文件结尾100字节处。
⑼ C语言 访存二进制文件定位问题
1.打开模式要用r+(对于ASCII文件)或者rb+(对于二进制文件)
2.fseek()函数有三个参数,第一个是文件指针,第二个是偏移量,第三个是起始位置,第三个参数有三个可选项,分别是SEEK_SET(文件开头),SEEK_CUR(当前位置),SEEK_END(文件结尾),feek()函数的作用就是将文件指针指向的文件读写位置设置为从起始位置起移动第二个参数表示的偏移量个字节的位置,第二个参数可以是负数,表示向前移动。
3.你所说的情况,应该用fgetpos()函数和fsetpos()函数设置读写位置。请自行上网查找这两个函数的使用说明。
⑽ C语言中如何定位文件txt的光标
1、使用fseek函数即可更改文件指针的位置。
函数名: fseek
功 能: 重定位流上的文件指针
用 法: int fseek(FILE *stream, long offset, int fromwhere);
描 述: 函数设置文件指针stream的位置。如果执行成功,stream将指向以fromwhere为基准,偏移offset个字节的位置。如果执行失败(比如offset超过文件自身大小),则不改变stream指向的位置。
返回值: 成功,返回0,否则返回其他值。
2、例子:
fseek(fp,100L,0);//把文件内部指针移动到离文件开头100字节处;
fseek(fp,100L,1);//把文件内部指针移动到离文件当前位置100字节处;
fseek(fp,-100L,2);//把文件内部指针退回到离文件结尾100字节处。