⑴ c語言中,文件指針中隱含的位置指針是怎麼回事
你指的是緩沖區位置呀。
fgetpos(),fseek(),fsetpos()這三個函數可以實現對文件讀取中位置的操作
fseek ()
函數名: fseek
功 能: 重定位流上的文件指針
用 法: int fseek(FILE *stream, long offset, int fromwhere);
描 述: 函數設置文件指針stream的位置。如果執行成功,stream將指向以fromwhere為基準,偏移offset個位元組的位置。如果執行失敗(比如offset超過文件自身大小),則不改變stream指向的位置。
返回值: 成功,返回0,否則返回其他值。
fgetpos()
函數名: fgetpos
功 能: 取得當前文件的句柄
用 法: int fgetpos(FILE *stream,*fpos_t filepos);
程序例:
#include <string.h>
#include <stdio.h>
int main(void)
{
FILE *stream;
char string[] = "This is a test";
fpos_t filepos;
/* open a file for update */
stream = fopen("DUMMY.FIL", "w+");
/* write a string into the file */
fwrite(string, strlen(string), 1, stream);
/* report the file pointer position */
fgetpos(stream, &filepos);
printf("The file pointer is at byte\
%ld\n", filepos);
fclose(stream);
return 0;
}
fsetpos ()
函數名: fsetpos
功 能: 定位流上的文件指針
用 法: int fsetpos(FILE *stream, const fpos_t *pos);
還不明白的話可以到專門網站上查查這三個函數
⑵ C語言文件位置指針的操作函數問題
函數原型
int fseek( FILE *stream, long offset, int origin );
stream為要操作的文件指針,offset為移動的范圍,origin為起始位置
origin:SEEK_CUR為從文件的當前位置移動
SEED_END為從文件的末尾向前移動
SEEK_SET為從文件的開始向後移動
簡單吧:)
⑶ C語言的文件的位置指針
網上給你找的,你看看哈。注意形象化的概念。
-----------------------------
在學習文件定位函數之前,需要了解一下文件位置指針的概念。文件位置指針只是一個形象化的概念,在C語言中用文件位置指針來表示文件當前讀或寫的數據在文件中的位置。當通過fopen函數打開文件時,可以認為文件位置指針總是指向文件的開頭、第一個數據之前。
當文件位置指針指向文件末尾時,表示文件結束。當進行讀操作時,總是從文件位置指針所指的位置開始,去讀其後的數據,然後位置指針移到尚未讀的數據之前,以備指示下一次的讀(或寫)操作。當進行寫操作時,總是從文件位置指針所指位置去寫,然後移到剛寫入的數據之後,以備指示下一次輸出的起始位置。
「文件指針」和「文件位置指針」是兩個不同的概念。
文件指針是指在程序中定義的FILE類型的變數,通過fopen函數調用給文件指針賦值,使文件指針和某個文件建立聯系(這種聯系實際上是通過fopen函數說明使用文件的方式),C語言中通過文件指針實現對文件的各種操作。
摘自:東北大學出版社李一波編著《新概念C語言》
--------------------------------------
⑷ c語言怎樣移動文件指針到制定位置啊
參數為下列其中一種:
SEEK_SET:從距文件開頭 offset 位移量為新的讀寫位置;
SEEK_CUR:以目前的讀寫位置往後增加 offset 個位移量;
SEEK_END:將讀寫位置指向文件尾後再增加 offset 個位移量。
⑸ C語言新手求解。關於文件、文件指針、文件位置指針和文件函數
1、到底是沒有哪個文件,是沒有msdev.exe、還是程序中要打開的文件
2、程序創建文件,在哪個,得看代碼是如何寫、路徑是如何的
3、文件沒有地址,有路徑,如果不寫路徑就是默認的當前路徑
4、如上面3的回答
。。。。。。。。
沒有文件,如果要打開則需要自己先創建,根據需求創建
。。。。。。。。。
⑹ c語言,文件指針
fp 是用來指向 FILE 結構類型的一個指針,
fopen 執行後,fp 將指向一個 FILE 結構,這個結構代表了這個文件。
⑺ C語言或者C++獲取文件中關鍵字所在位置的指針
1.當文件不太大的時候,可以先打開文件,然後讀取文件所有內容到一個緩沖區里,然後使用strstr來查找關鍵字在緩沖區哪個位置,對應文件位置用fseek就可以。
2.當文件大的時候,因為你要的是字元串,為了防止漏掉,你最好不要用緩沖區去一部分一部分套。你必須打開文件,然後用fgetc這樣的函數一個字元一個字元去讀。當發現與關鍵字首字元相同的字元時,查看這個字元與後面的字元串是否能組成關鍵字,如果不能則繼續查找,直到文件結束。
⑻ C語言文件指針
用強制類型轉換
flag
=
(unsigned
int)(*infile);
可以用printf("flag
=
%d,
*infile
=
%d
",
flag,
*infile)測試。
補充:
上次匆匆忙忙看了你的問題,覺得有點奇怪,今天在VC上調了一下,不知道你的編譯環境是什麼,我在VC6.0上printf("\n
%d",*infile);
是一個大整數,應該是一個指針值,理論上也應該如此,infile本來就是一個文件句柄。
看你的需求彷彿是想在讀取文件時能知道當前讀取的位元組數,還是應該用ftell(FILE
*)函數,如果想得到整個文件的大小,先移動到文件末尾,然後ftell(),ftell()示例如下,在VC6.0上編譯調試通過:
#include
<stdio.h>
void
main()
{
char
k;
FILE
*infile;
char
in_name[]
=
"test.txt";
//接收要打開的文件名
infile
=
fopen(in_name,"rb");
//假設文件能正常打開
while(!feof(infile))
//判斷是否文件尾
{
printf("%d\n",
ftell(infile));
k=fgetc(infile);
//讀入一個字元
}
}
⑼ 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語言中文件流操作中文件位置指針是怎樣變化的
當你用一個指針打開一個文件的時候,指針是指向文件開頭的。你讀多少位,指針就會像後移動多少。
你也可以用fseek
來控制指針的位置。關閉文件後
記得把指針置成null,希望能幫到你~