当前位置: 首页 > news >正文

IO的概念和标准IO函数

作业:

1.使用标准IO函数,实现文件的拷贝

#include <stdio.h>

int main(int argc, char *argv[]) {
    // 检查是否提供了源文件和目标文件
    if (argc != 3) {
        printf("Usage: %s <source_file> <destination_file>\n", argv[0]);
        return 1;
    }

    // 打开源文件以读取
    FILE *source = fopen(argv[1], "rb");
    if (source == NULL) {
        perror("Error opening source file");
        return 1;
    }

    // 打开目标文件以写入
    FILE *destination = fopen(argv[2], "wb");
    if (destination == NULL) {
        perror("Error opening destination file");
        fclose(source);  // 关闭源文件
        return 1;
    }

    // 逐块读取源文件并写入目标文件
    char buffer[1024];  // 缓冲区用于存储读取的数据
    size_t bytesRead;
    while ((bytesRead = fread(buffer, 1, sizeof(buffer), source)) > 0) {
        fwrite(buffer, 1, bytesRead, destination);  // 写入目标文件
    }

    // 检查读取和写入是否成功
    if (ferror(source)) {
        perror("Error reading from source file");
    }
    if (ferror(destination)) {
        perror("Error writing to destination file");
    }

    // 关闭源文件和目标文件
    fclose(source);
    fclose(destination);

    printf("File copied successfully.\n");

    return 0;
}

2.使用fgets函数,打印一个文件,类似cat

#include <stdio.h>

int main(int argc, char *argv[]) {
    // 检查是否传入了文件名参数
    if (argc != 2) {
        fprintf(stderr, "Usage: %s <filename>\n", argv[0]);
        return 1;
    }

    // 打开文件
    FILE *file = fopen(argv[1], "r");
    if (file == NULL) {
        perror("Unable to open file");
        return 1;
    }

    char buffer[1024];  // 用于存储每行读取的内容
    // 逐行读取文件并打印
    while (fgets(buffer, sizeof(buffer), file) != NULL) {
        printf("%s", buffer);  // 打印当前行内容
    }

    // 关闭文件
    fclose(file);
    return 0;
}

3.计算文件的行数

#include <stdio.h>

int main(int argc, char *argv[]) {
    // 检查是否传入了文件名参数
    if (argc != 2) {
        fprintf(stderr, "Usage: %s <filename>\n", argv[0]);
        return 1;
    }

    // 打开文件
    FILE *file = fopen(argv[1], "r");
    if (file == NULL) {
        perror("Unable to open file");
        return 1;
    }

    char buffer[1024];  // 用于存储每行读取的内容
    int lineCount = 0;  // 用于计数行数

    // 逐行读取文件并计数
    while (fgets(buffer, sizeof(buffer), file) != NULL) {
        lineCount++;  // 每读取一行,行数加1
    }

    // 打印文件的行数
    printf("The file has %d lines.\n", lineCount);

    // 关闭文件
    fclose(file);
    return 0;
}

相关文章:

  • 用Python+Flask打造可视化武侠人物关系图生成器:从零到一的实战全记录
  • 实训任务1.3 使用eNSP搭建基础网络
  • 如何解析API返回的JSON数据?
  • c++上课题目
  • GEE:计算长时间序列NPP与NDVI之间的相关系数
  • Vue3 TransitionGroup组件深入解析:结合Element Plus实践指南
  • iOS逆向工程专栏 第13篇:iOS动态分析基础
  • golang实现读取excel文件并转换为JSON格式
  • 51单片机编程学习笔记——74HC138译码器
  • 通用网盘客户端(基于webdav协议)
  • 《JavaScript解题秘籍:力扣队列与栈的高效解题策略》
  • 【Mac】2025-MacOS系统下常用的开发环境配置
  • 私有云基础架构
  • 全面了解机器学习:回归、分类、分割与检测任务
  • OpenCV:从入门到实战的全方位指南
  • DeepSeek助力学术写作:150个提示词解读
  • Goby 漏洞安全通告| Ollama /api/tags 未授权访问漏洞(CNVD-2025-04094)
  • HarmonyOS NEXT开发进阶(十一):应用层架构介绍
  • selenium用例执行过程采集操作形成测试报告上的回复
  • 基于 openEuler 22.09 的 OpenStack Yoga 部署
  • 媒体:黑话烂梗包围小学生,“有话好好说”很难吗?
  • 宋徽宗《芙蓉锦鸡图》亮相,故宫首展历代动物绘画
  • 《中国奇谭》首部动画电影《浪浪山小妖怪》定档8月2日
  • 历史新高!上海机场一季度营收增至31.72亿元,净利润增34%
  • “杭州六小龙”的招聘迷局
  • 北美票房|《罪人》遭媒体唱衰,好莱坞业内人士集体反击