C語言 檔案IO的使用

Young_LAS發表於2018-01-22

簡單介紹C語言檔案操作函式的用法(可以直接使用):

  • fopen
  • fclose
  • fprintf
  • fscanf
  • fputc
  • fgetc
  • fread
  • fwrite

標頭檔案

#include<stdio.h>

函式使用

  • fopen

函式原型: FILE *fopen( const char *filename, const char *mode );

    FILE *fp; //建立一個檔案指標

    fp = fopen("test.c", "w");
test.c為檔名filename,w表示以寫(write)的方式開啟

開啟方式:
    r: 以讀的方式開啟,檔案要是不存在,則開啟失敗
    w: 開啟一個空檔案以進行寫入。如果給定的檔案存在,其內容將被銷燬。沒有檔案時自動建立一個空檔案
    a: 以追加的方式開啟在檔案的末尾(附加)開啟,在將新資料寫入檔案之前不刪除EOF標記;如果檔案不存在,首先建立檔案。
    r+: 以讀和寫的方式開啟一個檔案。該檔案必須存在。
    w+: 以讀和寫的方式開啟一個空檔案。如果給定的檔案存在,其內容將被銷燬。
    a+: 以讀和追加的方式開啟一個檔案;附加操作包括在將新資料寫入檔案之前刪除EOF標記,在寫入完成後恢復EOF標記;如果檔案不存在,首先建立檔案。


  • fclose

函式原型: int fclose( FILE *stream );

fclose(fp);
有返回值,如果流成功關閉,則fclose返回0,如果失敗則返回EOF表示錯誤


  • fprintf

函式原型: int fprintf( FILE *stream, const char *format [, argument ]...);

    /*read the various data back from the file*/
    fp = fopen("test.txt", "w");
    fprintf(fp, "%s %ld %f%c", "a-string",65000, 3.14159, 'x');
    fclose(fp);


  • fscanf

函式原型: int fscanf( FILE *stream, const char *format [, argument ]... );

    /* Read data back from file: */
    char s[10];
    int i;
    float f;
    char c;
    fp = fopen("test.txt", "r");
    fscanf(fp, "%s", s);
    fscanf(fp, "%ld", &i);
    fscanf(fp, "%f", &f);
    fscanf(fp, "%c", &c);
    printf("%s,%ld,%f,%c\n", s, i, f, c);
    fclose(fp);
  • fputc

函式原型: int fputc( int c, FILE *stream );

    /*to send a character array to pf.*/
    fp = fopen("test.txt", "a");
    fputc('\n', fp);
    fputc('s', fp);
    fputc('s', fp);
    fputc('r', fp);
    fclose(fp);


  • fgetc

函式原型: int fgetc( FILE *stream );

    /*uses getc to read*/
    fp = fopen("test.txt", "r");
    char ch;
    ch = fgetc(fp);
    printf("%c\n",ch);
    ch = fgetc(fp);
    printf("%c\n", ch);
    ch = fgetc(fp);
    printf("%c\n", ch);
    fclose(fp);

從檔案指標pf中讀一個資料給ch,使用完 fgetc 後檔案指標 fp 自動後移

  • fread

函式原型: size_t fread( void *buffer, size_t size, size_t count, FILE *stream );

    /* Attempt to read in 10 characters */
    fp = fopen("test.txt", "r");
    int numread;
    char list2[30];
    numread = fread(list2, sizeof(char), 10, fp);
    printf("Number of items read = %d\n", numread);
    printf("Contents of buffer = %.10s\n", list2);


  • fwrite

函式原型: size_t fwrite( const void *buffer, size_t size, size_t count, FILE *stream );

    /* Write 25 characters to stream */
    fp = fopen("test.txt", "w");
    int numwritten;
    char list[30] = "abcdefghijklmnopqrstuvwxyz";
    numwritten = fwrite(list, sizeof(char), 25, fp);
    printf("Wrote %d items\n", numwritten);
    fclose(fp);

相關文章