天天看點

C語言學習筆記-檔案讀寫函數彙總

一、打開檔案

FILE *fopen( const char * filename, const char * mode );

FILE指的是C語言的檔案類型,其在stdio.h中有定義;

filename指的是檔案路徑與檔案名,格式為"磁盤:/檔案夾/檔案名.檔案類型",例如:“C:/qaq/test.txt”(特别注意是左斜杠,不是右斜杠);

mode指的是檔案打開的模式。

C語言學習筆記-檔案讀寫函數彙總

二、關閉檔案

int fclose( FILE *fp );

該函數是有int類型傳回值的,當檔案被成功關閉時,函數傳回值為零,關閉檔案失敗時将傳回EOF。

三、寫入檔案

1、fputc函數

int fputc( int c, FILE *fp );

作用:向檔案中輸入一個字元,若成功輸入則傳回輸入的值,若失敗則傳回EOF。在C語言中,#define EOF (-1) 。

特别注意:程式中所寫的int類型在寫入文本檔案時會按照ASCII碼被自動轉化為char類型。如:

fputc( 65, fp );

在文檔中為:A。

2、fputs函數與fprintf函數

int fputc( int c, FILE *fp );

int fputs( const char *s, FILE *fp );

作用:向檔案中輸入一個字元串,若成功輸入則傳回一個非負值,若失敗則傳回EOF。

四、讀取檔案

1、fgetc函數

int fgetc( FILE * fp );

作用:讀取檔案中的一個字元,若成功則傳回讀取的字元,若失敗則傳回EOF。

2、fgets函數

char *fgets( char *buf, int n, FILE *fp );

buf指的是存放讀取字元的數組;

n指的是讀取字元的長度,當讀到第n-1個字元時,會在之後加一個NULL表示終止字元串;

作用:讀取檔案中的n個字元,若成功則傳回讀取的字元,若文檔提前結束(也即遇到EOF)或遇到換行符

\n

,則自動加入終止符NULL。

3、fscanf函數

int fscanf( FILE *fp, const char *format, ... );

作用:讀取檔案中的字元,若遇到空格則會自動加入終止符NULL。

4、fseek函數

int fseek ( FILE *fp, long int offset, int whence );

offset指的是偏移量;

whence指的是參考點,包括: SEEK_SET(檔案頭),SEEK_CUR(檔案中的标記點),SEEK_END(檔案尾);

作用:在指定位置對檔案進行輸入,且隻改變輸入量的部分,而不影響文檔其他部分。

執行個體:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    FILE *fp=NULL;  
    int a,ch;
    
    if((fp=fopen("C:/qaq/test.txt","w"))==NULL)
    {
        printf("file cannot open \n");
        exit(0);  
        //exit結束程式,一般0為正常推出,其它數字為異常,其對應的錯誤可以自己指定。
    }
    else
    {
		printf("file opened for writing \n");
		fprintf(fp, "I like to study C.\n");	//fprinf
		a=fputc( 65, fp );	//fputc
   		printf("%c \n",a);
   		fputs("\nI qpink it's interesting. \n", fp);	//fputs
   		fseek ( fp , 24 , SEEK_SET );	//fseek
		fputs ( " th" , fp );
	}
	
    if(fclose(fp)!=0)
        printf("file cannot be closed \n");
    else
        printf("file is now closed \n");
    
    if((fp=fopen("C:/qaq/test.txt","r"))==NULL)
    {
        printf("file cannot open \n");
        exit(0);  
    }
    else
    {
		printf("file opened for reading \n");
		while((ch=fgetc(fp))!=EOF)
			putchar(ch);
			printf("\n");
	}
    if(fclose(fp)!=0)
        printf("file cannot be closed \n");
    else
        printf("file is now closed \n");
    return 0;
}
           

運作結果如下:

C語言學習筆記-檔案讀寫函數彙總

繼續閱讀