1. 程式人生 > >檔案指標偏移的相關函式(rewind ftell fseek)

檔案指標偏移的相關函式(rewind ftell fseek)

#include "stdafx.h"


#if  0

----rewind

void rewind ( FILE * stream );

函式功能:將檔案指標重新指向一個流的開頭。

如果一個檔案具有讀寫屬性,當我們寫完檔案,需要讀的時候,
此時會遇到檔案結尾現象。此時就需要 rewind


----ftell

long ftell ( FILE * stream );

函式功能:得到流式檔案的當前讀寫位置, 其返回值是當前讀寫
位置偏離檔案頭部的位元組數

返回值:成功,返回當前讀寫位置偏離檔案頭部的位元組數。 
失敗,返回 - 1


----fseek

int fseek ( FILE * stream, long offset, int origin );

stream:檔案控制代碼
offset:偏移量
origin:偏移起始位置

函式功能:偏移檔案指標。

返回值:成功返回 0,失敗返回-1

常見的起始位置有巨集定義:
#define SEEK_CUR 1 當前位置
#define SEEK_END 2 檔案結尾
#define SEEK_SET 0 檔案開頭

fseek(fp,100L,0); 把 fp 指標移動到離檔案開頭 100 位元組處;
fseek(fp, 100L, 1); 把 fp 指標移動到離檔案當前位置 100 位元組處;
fseek(fp, 100L, 2); 把 fp 指標退回到離檔案結尾 100 位元組處。

#endif


int _tmain(int argc, _TCHAR* argv[])
{
	FILE * fp = fopen("data.txt", "w+");

	char ch;
	for (ch = 'a'; ch <= 'z'; ch++)
	{
		fputc(ch,fp);
	}

	//rewind(fp);
	
	fseek(fp, 0, SEEK_SET);

	int len = ftell(fp); //返回當前位置偏離頭部的位元組數
	printf("len=%d\n", len);

	fclose(fp);

	return 0;
}