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

9月1日

1.

#include <stdio.h>
#include <stdlib.h>

#define BUF_SIZE 4096

int main(int argc, char *argv[])
{
if (argc != 3) {
printf("用法: %s <源文件> <目标文件>\n", argv[0]);
return 1;
}
FILE *src = fopen(argv[1], "r");  
if (src == NULL) {
perror("打开源文件失败");
return 1;
}

    FILE *dest = fopen(argv[2], "w"); 
if (dest == NULL) {
perror("创建目标文件失败");
fclose(src);
return 1;
}

    char buffer[BUF_SIZE];
size_t bytes;

    while ((bytes = fread(buffer, 1, sizeof(buffer), src)) > 0) {
if (fwrite(buffer, 1, bytes, dest) != bytes) {
perror("写入目标文件失败");
fclose(src);
fclose(dest);
return 1;
}
}

    if (ferror(src)) {
perror("读取源文件时出错");
}

    fclose(src);
fclose(dest);

    printf("文件拷贝完成: %s -> %s\n", argv[1], argv[2]);
return 0;
}

2.

#include <stdio.h>
#include <stdlib.h>

#define BUF_SIZE 4096

int main(int argc, char *argv[])
{
if (argc != 3) {
printf("用法: %s <源文件> <目标文件>\n", argv[0]);
return 1;
}

    FILE *src = fopen(argv[1], "r");   // 文本读
if (src == NULL) {
perror("打开源文件失败");
return 1;
}

    FILE *dest = fopen(argv[2], "w");  // 文本写
if (dest == NULL) {
perror("创建目标文件失败");
fclose(src);
return 1;
}

    char buffer[BUF_SIZE];
char outbuf[BUF_SIZE];  // 存放过滤后的数字
size_t bytes, outbytes;

    while ((bytes = fread(buffer, 1, sizeof(buffer), src)) > 0) {
outbytes = 0;
// 判断是否是数字字符
for (size_t i = 0; i < bytes; i++) {
if (buffer[i] >= '0' && buffer[i] <= '9') {
outbuf[outbytes++] = buffer[i];
}
}
if (outbytes > 0) {
if (fwrite(outbuf, 1, outbytes, dest) != outbytes) {
perror("写入目标文件失败");
fclose(src);
fclose(dest);
return 1;
}
}
}

    if (ferror(src)) {
perror("读取源文件时出错");
}

    fclose(src);
fclose(dest);

    printf("数字提取完成: %s -> %s\n", argv[1], argv[2]);
return 0;
}

3.

#include <myhead.h>
#define BUF_SIZE 4096
int main(int argc, const char *argv[])
{
if (argc != 3) {
printf("用法: %s <源文件> <目标文件>\n", argv[0]);
return 1;
}

    int src_fd = open(argv[1], O_RDONLY);
if (src_fd < 0) {
perror("打开源文件失败");
return 1;
}

    int dest_fd = open(argv[2], O_WRONLY | O_CREAT | O_TRUNC, 0644);
if (dest_fd < 0) {
perror("创建目标文件失败");
close(src_fd);
return 1;
}

    char buffer[BUF_SIZE];
ssize_t bytes_read, bytes_written;

    while ((bytes_read = read(src_fd, buffer, sizeof(buffer))) > 0) {
bytes_written = write(dest_fd, buffer, bytes_read);
if (bytes_written != bytes_read) {
perror("写入目标文件失败");
close(src_fd);
close(dest_fd);
return 1;
}
}

    if (bytes_read < 0) {
perror("读取源文件失败");
}

    close(src_fd);
close(dest_fd);

    printf("文件拷贝完成: %s -> %s\n", argv[1], argv[2]);
return 0;
}


区别,文件io没有缓冲区,标准io有,联系,标准io是建立在文件io之上的。

http://www.xdnf.cn/news/1421011.html

相关文章:

  • 8Lane V-by-One HS LVDS FMC Card
  • 【STM32】贪吃蛇 [阶段 8] 嵌入式游戏引擎通用框架设计
  • IO进程线程;标准io;文件IO;0901
  • OPENCV 基于旋转矩阵 旋转Point2f
  • Python核心技术开发指南(030)——函数入门
  • PAT乙级_1093 字符串A+B_Python_AC解法_含疑难点
  • 基于 C 语言的网络单词查询系统设计与实现(客户端 + 服务器端)
  • Python OpenCV图像处理与深度学习:Python OpenCV特征检测入门
  • AI时代SEO关键词实战解析
  • Python3环境搭建教程 - 使用Conda工具
  • CGroup 资源控制组 + Docker 网络模式
  • 【并发场景问题】超卖、一人一单业务问题的解决方案
  • 大型语言模型监督微调(SFT)
  • openharmony之sandbox沙箱机制详解
  • K8S网络组件Calico深度解析
  • Python OpenCV图像处理与深度学习:Python OpenCV图像几何变换入门
  • 深入解析 Go 程序逆向风险与防护策略
  • 如何对嵌入式软件进行单元测试
  • 无重复字符的最长子串,leetCode热题100,C++实现
  • Vue3响应式陷阱:如何避免ref解构导致的响应式丢失
  • 电动自行车车架前叉振动、组合件冲击、把立管弯曲强度试验机等机械强度性能测试项目解析
  • 【趣味阅读】Python 文件头的秘密:从编码声明到 Shebang
  • Spring事务管理策略对比与性能优化实践指南
  • AI辅助论文写作,在《人工智能生成合成内容标识办法》出台后的新规则
  • HarmonyOS 应用开发深度实践:深入 Stage 模型与 ArkTS 声明式 UI
  • Linux - JDK安装
  • 刷题之链表oj题目
  • 突破超强回归模型,高斯过程回归!
  • 大语言模型对齐
  • VMware pro16(许可证)+centos 7超详细安装教程