linux fopen、fclose、fwrite、fread、fseek

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

1. fopen函数原型: ```c FILE *fopen(const char *filename, const char *mode); ``` 使用说明: - filename:文件名,可以是相对路径或绝对路径,需要包含文件扩展名。 - mode:访问模式,可以是 `"r"`(只读)、`"w"`(只写)、`"a"`(追加)、`"rb"`(二进制只读)、`"wb"`(二进制只写)、`"ab"`(二进制追加)等。 返回值: - 成功打开文件返回指向该文件的指针。 - 打开文件失败返回 `NULL`。 2. fclose函数原型: ```c int fclose(FILE *stream); ``` 使用说明: - stream:打开文件的指针。 返回值: - 关闭文件成功返回 0。 - 关闭文件失败返回非 0 值。 3. fread函数原型: ```c size_t fread(void *ptr, size_t size, size_t count, FILE *stream); ``` 使用说明: - ptr:指向要读取数据的缓冲区。 - size:每个数据项的字节数。 - count:要读取的数据项数。 - stream:打开文件的指针。 返回值: - 返回实际读取的数据项数,如果该值小于 count,则可能是读取到了文件末尾或者发生了错误。 4. fwrite函数原型: ```c size_t fwrite(const void *ptr, size_t size, size_t count, FILE *stream); ``` 使用说明: - ptr:指向要写入数据的缓冲区。 - size:每个数据项的字节数。 - count:要写入的数据项数。 - stream:打开文件的指针。 返回值: - 返回实际写入的数据项数,如果该值小于 count,则可能是因为磁盘已满或者发生了错误。 5. fseek函数原型: ```c int fseek(FILE *stream, long offset, int whence); ``` 使用说明: - stream:打开文件的指针。 - offset:偏移量,可以是正数或负数,如果是负数则表示向文件开头偏移。 - whence:偏移的位置,可以是 `SEEK_SET`(文件开头)、`SEEK_CUR`(当前位置)、`SEEK_END`(文件结尾)。 返回值: - 执行成功返回 0。 - 执行失败返回非 0 值。 使用注意事项: - 在使用文件 I/O 函数时,需要先打开文件,处理完后再关闭文件。 - 在使用 freadfwrite 函数时,需要注意缓冲区的大小,避免溢出。 - 在使用 fseek 函数时,需要注意偏移量的取值范围,避免越界访问文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值