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