歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> Linux教程

Linux下C語言之文件操作

C語言庫函數的文件操作實際上是獨立於具體的操作系統平台的,不管是在DOS、Windows、Linux還是在VxWorks中都是這些函數:

創建和打開的函數:

    FILE *fopen(const char *path, const char *mode);
    fopen()實現打開指定文件filename,其中的mode為打開模式,C語言中支持的打開模式如下表:
    r, rb 以只讀方式打開
    w, wb 以只寫方式打開。如果文件不存在,則創建該文件,否則文件被截斷
    a, ab 以追加方式打開。如果文件不存在,則創建該文件
    r+, r+b, rb+ 以讀寫方式打開
   w+, w+b, wh+ 以讀寫方式打開。如果文件不存在時,創建新文件,否則文件被截斷
   a+, a+b, ab+ 以讀和追加方式打開。如果文件不存在,創建新文件
   其中b用於區分二進制文件和文本文件,這一點在DOS、Windows系統中是有區分的,但Linux不區分二進制文件和文本文件。
 讀寫的函數:
     C庫函數支持以字符、字符串等為單位,支持按照某中格式進行文件的讀寫,這一組函數為:
     int fgetc(FILE *stream);
     int fputc(int c, FILE *stream);
    char *fgets(char *s, int n, FILE *stream);
     int fputs(const char *s, FILE *stream);
    int fprintf(FILE *stream, const char *format, ...);
    int fscanf (FILE *stream, const char *format, ...);
     size_t fread(void *ptr, size_t size, size_t n, FILE *stream);
    size_t fwrite (const void *ptr, size_t size, size_t n, FILE *stream);
    fread()實現從流stream中讀取加n個字段,每個字段為size字節,並將讀取的字段放入ptr所指的字符數組中,返回實際已讀取的字段數。在讀取的字段數小於num時,可能是在函數調用時出現錯誤,也可能是讀到文件的結尾。所以要通過調用feof()和ferror()來判斷。
     write()實現從緩沖區ptr所指的數組中把n個字段寫到流stream中,每個字段長為size個字節,返回實際寫入的字段數。
另外,C庫函數還提供了讀寫過程中的定位能力,這些函數包括
    int fgetpos(FILE *stream, fpos_t *pos);
   int fsetpos(FILE *stream, const fpos_t *pos);
   int fseek(FILE *stream, long offset, int whence); 
   。。。

下面看一個例子,源代碼如下 #include <stdio.h>
#define LENGTH 100
main()
{
  FILE *fd;
  char str[LENGTH];   fd = fopen("file.txt", "w+");
  /* 創建並打開文件 */
  if (fd)
  {
    fputs("Hello, create file success!", fd);
 #   /* 寫入Hello, software weekly字符串 */
    fclose(fd);
  }   fd = fopen("file.txt", "r");
  fgets(str, LENGTH, fd);
  ## /* 讀取文件內容 */
  printf("%s\n", str);
  fclose(fd);
}
編譯一下,看看效果如何。
Copyright © Linux教程網 All Rights Reserved