linux fopen、fclose、fwrite、fread

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/renlonggg/article/details/88667099

头文件:#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;    
}

猜你喜欢

转载自blog.csdn.net/renlonggg/article/details/88667099