1. 程式人生 > >和檔案相關的函式(序)

和檔案相關的函式(序)

之前整理了常見的一些和檔案相關的函式,今天再補充幾個和檔案相關的函式: feof() feof()是一個c語言函式,既可用以判斷二進位制檔案又可用以判斷文字檔案。用來檢測檔案結束,函式原型為: int feof(FILE *stream); 如果檔案結束,則返回非0值(-1),否則返回0,檔案結束符只能被clearerr()清除。如下面例子(讀該檔案本身並列印輸出):

#include<stdio.h> int main(){

		FILE *file;
		char c;
		
		file=fopen("user.txt","r");
		if(!file){
			printf("檔案開啟失敗!");
		}
		//while(1){// 將1替換為feof
		while(!feof(file)){
			c=fgetc(file);
			if(c==EOF){
				break;
			}
			printf("%s",c);
		}
	}

ferror() ferror()用來檢查引數所指定的檔案流是否發生了錯誤情況, 如有錯誤發生則返回非0 值。函式原型為: int ferror(FILE *stream); 通過如下例子來學習ferror()的用法: #include<stdio.h> int main(){

		FILE *file;
		char c;
		
		file=fopen("user.txt","r");
		if(!file){
			printf("檔案開啟失敗!");
			return 1;
		}
		
		fputc('a',file);
		if(ferror(file)){
			perror("fputc");//列印錯誤資訊	
			clearerr(file);//清除錯誤標誌
		}
		c=fgetc(file);//讀取一個字元
		printf("讀到了:\n",c);
		if(ferror(file)){
			perror("fgetc");//列印錯誤資訊	
		}
		
		close(file);
			return 0;
	}

fseek() fseek()是檔案定位函式,檔案始終只能從當前的位置向檔案尾的方向讀寫。函式的原型為: int fseek(file *stream, long offset , int origin); 引數二; 偏移量 可正 可負; <0 向檔案頭方向偏移; >0 向檔案尾方向偏移; 引數三: 設定從檔案的哪裡開始偏移,可能取值為: 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位元組處。

		#include<stdio.h>
		int main(){
		
			FILE *file;
			char c;
			char line[256];
			int i;
			
			file=fopen("user.txt","r");
			if(!file){
				printf("檔案開啟失敗!");
				return 1;
			}
			//把當前檔案的位置定位到倒數第十個字元
			//fseek(file,-10,SEEK_END);
			
			//讀取最後10個字元
			/*while((c=fgetc(file))!=EOF){
				printf("%c",c);
			}
			*/
			//讀取檔案的第一行
			fseek(file,0,SEEK_SET);
			
			fgets(line,sizeof(line),file);
			printf("第一行是:%s\n",line);
			//讀取當前位置的前五個字元
			fseek(file,-5,SEEK_CUR);
			
			for(i=0;i<5;i++){
				c=fgetc(file);
				printf("%c",c);
			}
			//結果為865,回車佔2個字元
			close(file);
		}