文件读写函数总结

文件读写函数

fwrite

fwrite 是一个用于将数据块写入文件的函数。它通常用于将内存中的数据写入磁盘文件或其他输出流中

函数原型

size_t fwrite(const void *ptr, size_t size, size_t count, FILE *stream);

参数解释
ptr:指向要写入的数据的内存地址。
size:每个数据项的大小(以字节为单位)。
count:要写入的数据项数量。
stream:指向文件或输出流的指针,用于确定数据的写入位
返回值
fwrite 函数返回实际成功写入的数据项数量。如果返回值小于 count,可能表示写入过程中出现了错误或文件写入不完整。

示例

#include <stdio.h>

int main() {
    int data[] = {1, 2, 3, 4, 5};
    FILE *file = fopen("data.bin", "wb"); // 打开一个二进制文件以进行写入
    
    if (file != NULL) {
        size_t elements_written = fwrite(data, sizeof(int), sizeof(data) / sizeof(int), file);
        printf("Elements written: %zu\n", elements_written);
        
        fclose(file);
    } else {
        printf("Failed to open the file.\n");
    }
    
    return 0;
}

fseek

fseek 函数是用于在文件中移动文件指针的函数,它通常用于定位文件中的特定位置,以便进行读取或写入操作。

函数原型

int fseek(FILE *stream, long offset, int origin);

参数解释

stream:指向要进行操作的文件流的指针。
offset:移动的偏移量。正数表示向文件末尾方向移动,负数表示向文件开头方向移动。
origin:起始位置,决定了偏移量是相对于文件开头、当前位置还是文件末尾来计算的。
起始位置参数

SEEK_SET:偏移量相对于文件开头计算。
SEEK_CUR:偏移量相对于当前位置计算。
SEEK_END:偏移量相对于文件末尾计算。
返回值
fseek 函数返回零(0)表示成功,非零值表示出现错误或失败。

示例

#include <stdio.h>

int main() {
    FILE *file = fopen("data.txt", "r");
    if (file != NULL) {
        fseek(file, 10, SEEK_SET); // 移动文件指针到文件开头偏移量为10的位置
        
        // 从当前指针位置读取数据或执行其他操作
        
        fclose(file);
    } else {
        printf("Failed to open the file.\n");
    }
    
    return 0;
}

fgets

用于从文件中读取一行文本数据的函数,它通常用于逐行读取文件内容。

函数原型

char *fgets(char *str, int n, FILE *stream);

参数解释:

str:指向字符数组的指针,用于存储从文件中读取的数据。
n:指定要读取的最大字符数,通常为数组的大小。
stream:指向要进行读取操作的文件流的指针。
返回值:
fgets 函数成功读取数据时,返回 str 参数的值(即指向读取的字符串的指针)。如果到达文件末尾或发生错误,则返回 NULL。

示例

#include <stdio.h>

int main() {
    FILE *file = fopen("data.txt", "r");
    if (file != NULL) {
        char buffer[100]; // 用于存储每行的文本数据
        
        while (fgets(buffer, sizeof(buffer), file) != NULL) {
            printf("%s", buffer); // 打印读取到的文本数据
        }
        
        fclose(file);
    } else {
        printf("Failed to open the file.\n");
    }
    
    return 0;
}

其他文件相关的函数:read,write,fputc,fputs,
格式化函数:snprintf

面试题

#include <stdio.h>
int main(){
    char str[] = "hello world";
    int i = 2;
    char buf[1024];
    FILE* fp = fopen("out.txt", "w+");
    fwrite(str, sizeof(str), 1, fp);
    //移动文件的读写指针
    fseek(fp, i, SEEK_SET);
    //从指针指向的位置开始读
    fgets(buf, 1024, fp);
    printf("%s\n", buf);
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值