歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux下C語言之文件操作

Linux下C語言之文件操作

日期:2017/2/28 16:03:07   编辑:Linux教程

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