fopen打开文件
定义函数FILE * fopen(const char *path,const char *mode);
其中const char *path为文件的打开路径及文件名。
const char *mode为以下几种模式:
R:打开只读文件,该文件必须存在。
r+:打开可读写的文件,该文件必须存在。
w:打开只读文件,若文件存在则文件长度清0,即该文件内容会消失;若文件不存在则建立该文件。
w+:打开可读写文件,若文件存在则文件长度清0,即该文件内容会消失;若文件不存在则建立该文件。
a:以附加方式打开只写文件,若文件不存在,则会建立该文件;若文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。
a+:以附加方式打开可读写文件,若文件不存在,则建立该文件;若文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。
fclose关闭文件
定义函数int fclose(FILE* stream);
若关闭成功则返回0,有错误返回EOF并把错误代码存到errno
fread从文件中读取数据
定义函数:size_ t fread(void *ptr,size_t size,size_t nmemb,FILE * stream)
其中stream 为已打开的文件指针,ptr为存放读取数据的空间,size_t nmemb为读取的字符数
例:
#include<stdio.h>
#define num 3
struct test
{
char name[20];
int size;
}a[num];
int main()
{
FILE * stream;
int i;
stream=fopen("/root/Desktop/data","r");
fread(a,sizeof(struct tesr),num,stream);
fclose(stream);
for(i=0;i<num;i++)
{
printf("%s %d",a[i].name,a[i].size);
}
return 0;
}
fwrite用于将数据写入文件
定义函数:size_t fwrite (const void *ptr,size_t size,size_t nmemb,FILE * stream);
其中stream 为已打开的文件指针,ptr为欲写入的数据地址,size_t nmemb为写入的字符数
#include<stdio.h>
#define num 3
struct test
{
char name[20];
int size;
}a[num];
int main()
{
FILE * stream;
int i;
for(i=0;i<num;i++)
{
a.name="a";
a.size=i;
}
stream=fopen("/root/Desktop/data","w");
fwrite(a,sizeof(struct tesr),num,stream);
fclose(stream);
return 0;
}
fseek用于移动文件的读写位置(我理解为光标在文件的位置)
定义函数:int fseek(FILE * stream,long offset ,int whence)
其中stream 为已打开的文件指针,offset为根据参数whence来移动读写的位置数。
参数whence为下列几种:
SEEK_SET从距文件开头offset位移量为新的读写位置。
SEEK_CUR以目前的读写位置往后增加offset个位移量。
SEEK_END将读写位置指向文件尾后再增加offset个位移量