當前位置:首頁 » 編程語言 » c語言文件定位
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言文件定位

發布時間: 2022-12-11 19:18:11

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位元組處。