当前位置: 首页 > 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.dtcms.com/a/360792.html

相关文章:

  • WhatsApp 漏洞与 Apple 零日漏洞一起被利用于间谍软件攻击
  • LangChain VectorStores核心:多向量数据库统一交互层与RAG存储中枢
  • 深度学习——速问速答
  • Java视觉跟踪入门:使用OpenCV实现实时对象追踪
  • Vue2存量项目国际化改造踩坑
  • pyside6小项目:进制转换器
  • 《架构师手记:SpringCloud整合Nacos实战·一》
  • 2.MySQL库的操作
  • Spark实现推荐系统中的相似度算法
  • 【LeetCode】19、删除链表的倒数第N个结点
  • P1803 凌乱的yyy / 线段覆盖
  • 802.11 和 802.1X
  • 计算机毕设选题:基于Python+Django的健康饮食管理系统设计【源码+文档+调试】
  • 网络原理——TCP/UDP/IP
  • 【面试场景题】如何快速判断几十亿个数中是否存在某个数
  • 【面试场景题】100M网络带宽能不能支撑QPS3000
  • (3dnr)多帧视频图像去噪 (一)
  • 第六章 Vue3 + Three.js 实现高质量全景图查看器:从基础到优化
  • 站在巨人的肩膀上:gRPC通过HTTP/2构建云原生时代的通信标准
  • Goframe 框架下HTTP反向代理并支持MCP所需的SSE协议的实现
  • 【深度学习基础】深度学习中的早停法:从理论到实践的全面解析
  • 【php反序列化字符串逃逸】
  • word运行时错误‘53’,文件未找到:MathPage.WLL,更改加载项路径完美解决
  • Android原生HttpURLConnection上传图片方案
  • mysql导出csv中字段里有换行符的处理办法及hive导出处理办法
  • 印度数据源 Java 对接文档
  • 【DeepSeek】蓝耘元生代 | 蓝耘MaaS平台与DeepSeek-V3.1重构智能应用开发
  • 打造智能写作工作流:n8n + 蓝耘MaaS平台完整实战指南
  • 20.30 QLoRA微调终极指南:Hugging Face参数优化实战,24GB显存直降50%性能不减
  • linux centos 忘记开机密码,重置root密码的两种方式