Linux C的简单文件操作

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个位移量

猜你喜欢

转载自blog.csdn.net/qq_37624987/article/details/81394345