fopen,fread,fseek,ftell,fclose,fileno的用法

本文介绍了C语言中用于文件操作的一系列函数,包括fopen用于打开文件并指定读写模式,fread用于从文件中读取数据,fseek移动文件指针到指定位置,ftell获取当前文件指针位置,fclose关闭文件,以及fileno获取文件描述符。文章详细阐述了各函数的参数说明和使用场景。
摘要由CSDN通过智能技术生成

fopen,fread,fseek,ftell,fclose,fileno的使用介绍以及参数说明

fopen

打开一个文件,可以指定打开模式(如只读、只写、读写等)和文件名。函数原型:FILE *fopen(const char *filename, const char mode),返回类型为FILE类型的指针,表示打开的文件。
filename:要打开的文件名,可以包含路径信息,路径分隔符为系统相关的字符。
mode:打开模式,是一个字符串,用于指定打开文件的方式,有以下几种:

mode类型说明
w写方式打开文件,如果文件存在则清空文件,如果不存在则创建文件
a写方式打开文件,如果文件存在则在文件末尾追加数据,如果文件不存在则创建文件
rb以二进制只读方式打开文件
wb以二进制写方式打开文件,如果文件存在则清空文件,如果不存在则创建文件
ab以二进制写方式打开文件,如果文件存在则在文件末尾追加数据,如果文件不存在则创建文件
r+以读写方式打开文件,文件必须存在。
w+以读写方式打开文件,如果文件存在则清空文件,如果不存在则创建文件。
a+以读写方式打开文件,如果文件存在则在文件末尾追加数据,如果文件不存在则创建文件。
r+b以二进制读写方式打开文件,文件必须存在。
w+b以二进制读写方式打开文件,如果文件存在则清空文件,如果不存在则创建文件。
a+b以二进制读写方式打开文件,如果文件存在则在文件末尾追加数据,如果文件不存在则创建文件。

其中,“r” 表示只读,“w” 表示只写,“a” 表示追加。“+” 表示可读可写,“b” 表示二进制模式,可以与其他模式组合使用。这些模式可以根据实际需要进行组合,例如 “rb” 表示以只读的二进制模式打开文件,“w+” 表示以读写的方式打开文件,如果文件不存在则创建文件。

fread

从文件中读取数据。函数原型:size_t fread(void *ptr, size_t size, size_t count, FILE *stream),返回值是成功读取的元素数目。

ptr:指向要读取数据的缓冲区,即读取到的数据将被存放到该缓冲区中。
size:要读取的每个数据块的字节数。比如,如果要读取一个 int 类型的数据,那么 size 应该是 sizeof(int),通常使用 sizeof 关键字来获取数据类型的字节数。
count:要读取的数据块的数量。
stream:指向文件对象的指针。

fseek

定位文件指针的位置,可以用来移动文件指针到文件中的任意位置。函数原型:int fseek(FILE *stream, long offset, int origin),返回值为0表示成功。

stream:为指向文件的指针
offset:表示需要移动的偏移量。可以为正数、负数或零。如果需要将文件指针移动到文件的结尾,可以将offset设置为0,origin设置为SEEK_END。如果需要将文件指针移动到文件的开头,可以将offset设置为0,origin设置为SEEK_SET。

origin:表示偏移量的起始位置。可以使用以下三个值之一

origin类型说明
SEEK_SET表示从文件开头开始计算偏移量。偏移量的值不能为负数。
SEEK_CUR表示从当前文件位置开始计算偏移量。偏移量的值可以为正数或负数。
SEEK_END表示从文件结尾开始计算偏移量。偏移量的值通常为负数。

ftell

获取当前文件指针的位置。函数原型:long ftell(FILE *stream),返回值为当前文件指针的偏移量。

stream:为指向文件的指针

fclose

关闭打开的文件。函数原型:int fclose(FILE *stream),返回值为0表示成功关闭。

stream:为指向文件的指针

fileno

获取文件流所对应的文件描述符。函数原型:int fileno(FILE *stream),返回值为文件描述符。

stream:为指向文件的指针

_chsize_s
是一个 Windows 平台特有的函数,用于调整文件的大小。函数原型:errno_t _chsize_s(int fd, __int64 size),返回值为0表示成功改变文件大小。

fd:文件描述符,可以通过 _fileno 函数获取。
size:调整后的文件大小,以字节为单位。

例如,以下代码调整文件大小为 1024 字节

#include <stdio.h>
#include <io.h>
int main() {
    int fd = _fileno(fopen("test.txt", "wb"));  // 以二进制写方式打开文件
    __int64 size = 1024;  // 调整后的文件大小为 1024 字节
    errno_t result = _chsize_s(fd, size);
    if (result != 0) {
        printf("Failed to change file size.\n");
    }
    fclose(fd);
    return 0;
}

注意,_chsize_s 函数只能用于二进制文件,对于文本文件调用此函数会产生未定义行为。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值