头文件:#include<stdio.h>
FILE *fopen(const char *path, const char *mode);
mode:
r: 只读方式打开文件,并指向文件起始位置。
r+:读写方式打开文件,并指向文件的起始位置,但是如果文件不存在则不会创建
w:只写写方式打开文件,如果文件不存在则创建文件,文件存在则文件长度清0,并指向文件的起始位置。
w+:读写方式打开文件。如果文件不存在则创建文件,文件存在则文件长度清0,并指向文件的起始位置。
a:追加写的方式打开,如果文件不存在则创建文件,并指向文件的尾端。
a+:追加读写的方式打开,如果文件不存在则创建文件。读文件->文件位置指针指向文件起始位置,写文件->文件位置指针指向文件尾端。
衍生:
rb,rb+,wb,wb+,ab,ab+; 对二进制操作
rt,rt+,wt,wt+,at,at+; 对文本文件操作,默认格式是txt
返回值:成功返回一个文件指针,失败返回NULL,并设置errno;
int fclose(FILE * stream);
参数:
stream为文件流指针。
返回值:
若关文件动作成功则返回0,有错误发生时则返回EOF,并把错误代码存到errno。
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *FP);
参数:
ptr是要输入数据的缓冲区指针,
size是读去对象的大小,
nmemb表示写入的对象个数,
fp是FILE的结构指针
返回值:fwrite 写进文件的字节数,写失败返回错误码--负数
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *FP);
参数:
ptr是读取数据的缓冲区指针,
size是读去对象的大小,
nmemb表示读取的对象个数,
fp是FILE的结构指针
返回值:读取文件的字节数,读取失败返回错误码--负数
int fseek(FILE * stream,long offset,int whence);//和fread、fwrite搭配使用
参数 :
stream:文件流
offset:偏移量
whence为下列其中一种:
SEEK_SET从距文件开头offset位移量为新的读写位置。
SEEK_CUR 以目前的读写位置往后增加offset个位移量。
SEEK_END将读写位置指向文件尾后再增加offset个位移量。
当whence值为SEEK_CUR 或SEEK_END时,参数offset允许负值的出现。
demo:
#include <stdio.h>
#include <string.h>
char *str1="hello world !\n";//加"\n"表示文本换行
char *str2="second line test !\n";
int main()
{
FILE *fp = NULL;
int write_length = 0;
fp = fopen("11.txt", "w+");
if(fp == NULL)
{
return 0;
}
write_length = fwrite(str1, sizeof(char), strlen(str1), fp);
printf("write_length = %d\n", write_length);
write_length = fwrite(str2, sizeof(char), strlen(str2), fp);
printf("write_length = %d\n", write_length);
fclose(fp);
fp = NULL;
return 0;
}