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;
}
相关文章:
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]);re…...
tauri2+typescript+vue+vite+leaflet等的简单联合使用(一)
项目目标 主要的目的是学习tauri。 流程 1、搭建项目 2、简单的在项目使用leaflet 3、打包 准备项目 环境准备 废话不多说,直接开始 需要有准备能运行Rust的环境和Node,对于Rust可以参考下面这位大佬的文章,Node不必细说。 Rust 和…...
【流程图】在 .NET (WPF 或 WinForms) 中实现流程图中的连线算法
在 .NET (WPF 或 WinForms) 中实现流程图中的连线算法,通常涉及 图形绘制 和 路径计算。常见的连线方式包括 直线、折线 和 贝塞尔曲线。以下是几种方法的介绍和示例代码。 1. 直线连接(最简单) 适用场景: 两个节点之间没有障碍…...
IDEA集成DeepSeek,通过离线安装解决无法安装Proxy AI插件问题
文章目录 引言一、安装Proxy AI1.1 在线安装Proxy AI1.2 离线安装Proxy AI 二、Proxy AI中配置DeepSeek2.1 配置本地部署的DeepSeek(Ollama方式)2.2 通过第三方服务商提供的API进行配置 三、效果测试 引言 许多开发者尝试通过安装Proxy AI等插件将AI能力…...
【流行病学】Melodi-Presto因果关联工具
title: “[流行病学] Melodi Presto因果关联工具” date: 2022-12-08 lastmod: 2022-12-08 draft: false tags: [“流行病学”,“因果关联工具”] toc: true autoCollapseToc: true 阅读介绍 Melodi-Presto: A fast and agile tool to explore semantic triples derived from …...
详细分析KeepAlive的基本知识 并缓存路由(附Demo)
目录 前言1. 基本知识2. Demo2.1 基本2.2 拓展2.3 终极 3. 实战 前言 🤟 找工作,来万码优才:👉 #小程序://万码优才/r6rqmzDaXpYkJZF 基本知识推荐阅读:KeepAlive知识点 从实战中学习,源自实战中vue路由的…...
【Go】Go viper 配置模块
1. 配置相关概念 在项目开发过程中,一旦涉及到与第三方中间件打交道就不可避免的需要填写一些配置信息,例如 MySQL 的连接信息、Redis 的连接信息。如果这些配置都采用硬编码的方式无疑是一种不优雅的做法,有以下缺陷: 不同环境…...
zabbix“专家坐诊”第277期问答
在线答疑:乐维社区 问题一 Q:这个怎么解决呢? A:缺少这个依赖。 Q:就一直装不上。 A:装 zabbix-agent2-7.0.0-releasel.el7.x86 64 需要前面提示的那个依赖才可以装。 问题二 Q:大佬,如果agen…...
大模型工程师学习日记(十一):FAISS 高效相似度搜索和密集向量聚类的库
Facebook AI Similarity Search (Faiss /Fez/) 是一个用于高效相似度搜索和密集向量聚类的库。它包含了在任意大小的向量集合中进行搜索的算法,甚至可以处理可能无法完全放入内存的向量集合。它还包含用于评估和参数调整的支持代码。 Faiss 官方文档:We…...
python学习第三天
条件判断 条件判断使用if、elif和else关键字。它们用于根据条件执行不同的代码块。 # 条件判断 age 18 if age < 18:print("你还是个孩子!") elif age 18:print("永远十八岁!") else:print("你还年轻!")…...
深入解析 Svelte:下一代前端框架的革命
深入解析 Svelte:下一代前端框架的革命 1. Svelte 简介 Svelte 是一款前端框架,与 React、Vue 等传统框架不同,它采用 编译时(Compile-time) 方式来优化前端应用。它不像 React 或 Vue 依赖虚拟 DOM,而是…...
C++20 中位移位运算符的统一行为:深入解析与实践指南
文章目录 1. 位移位运算符的基础1.1 左移运算符(<<)1.2 右移运算符(>>) 2. C20 对位移位运算符的统一2.1 移位数量超出操作数位宽2.2 负数移位 3. 实践中的注意事项4. 示例代码5. 总结 在 C 的发展历程中,…...
Linux——基本指令
我们今天学习Linux最基础的指令 ls 指令 语法: ls [选项] [⽬录或⽂件] 功能:对于⽬录,该命令列出该⽬录下的所有⼦⽬录与⽂件。对于⽂件,将列出⽂件名以及其他信 息。 命令中的选项,一次可以传递多个 ,…...
MySql面试总结(二)
WHERE 子句优化 截至2024年7月,MySQL最新稳定版本是8.2,并不存在MySQL 8.4 。下面从常见的几个方面为你介绍 MySQL 8.x 中 WHERE 子句的优化方法: 1. 确保使用索引 原理:索引可以加快数据的查找速度,当 WHERE 子句中的条件列有索引时,MySQL 可以直接定位到符合条件的数…...
Pytorch中的主要函数
目录 一、torch.manual_seed(seed)二、torch.cuda.manual_seed(seed)三、torch.rand(*size, outNone, dtypeNone, layouttorch.strided, deviceNone, requires_gradFalse)四、给大家写一个常用的自动选择电脑cuda 或者cpu 的小技巧五、torch.version.cuda;torch.bac…...
Java实现大数据量导出报表
一、实现方式 在Java中,导出数据到Excel有多种方式,每种方式都有其优缺点,适用于不同的场景。以下是常见的几种方式及其特点: 1.1 Apache POI Apache POI 是 Java 中最流行的库,支持读写 Excel 文件(包括…...
大语言模型 智能助手——既能生成自然语言回复,又能在必要时调用外部工具获取实时数据
示例代码: import json from langgraph.graph import Graph, END,StateGraph from langchain_core.utils.function_calling import convert_to_openai_function from langchain_community.tools.openweathermap import OpenWeatherMapQueryRun from langchain_core…...
PyTorch 系统教程:理解机器学习数据分割
数据分割是机器学习中的一个基本概念,它直接影响模型的性能和泛化。在本文中,我们将深入研究为什么数据分割在机器学习中很重要,并演示如何使用PyTorch有效地实现它。 理解数据分割 数据分割是将数据集划分为单独的组以进行训练、验证和测试…...
分水岭算法(Watershed Algorithm)教程:硬币分割实例
import cv2 import numpy as np# 1. 图像预处理 img cv2.imread("./water/water_coins.jpeg") gray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) ret, thresh cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV cv2.THRESH_OTSU) kernel np.ones((3, 3), np.int8)…...
【STM32项目实战系列】基于STM32G474的FDCAN驱动配置
前言:本周工作中用到了CANFD的驱动,由于以前都是用到的CAN2.0,所以过程并不是特别的顺利,所以中间遇到几个比较小的问题导致自己卡住了一段时间,特此记录一下并完全奉上自己的配置的源码。 1,CANFD配置与简…...
2026 年我作为资深工程师如何使用 LLM Agent:从副驾到主驾的真实工作流转变
从副驾到主驾,2026 年资深工程师的 LLM Agent 实战工作流:哪些交给 Agent,哪些必须自己做。 原文链接:AI 小老六 一年之差:Agent 从「勉强能用」变成了「几乎离不开」 2025 年初,行业里最强的推理模型还是…...
前端工程化实战:代码规范、兼容性、调试与项目整合
前言学完 HTML 和 CSS 的核心知识后,如何写出规范、可维护、兼容性好的代码,并高效地调试和构建项目,是很多初学者的薄弱环节。本篇整合 代码书写规范、浏览器兼容性处理、Chrome DevTools 调试技巧、项目目录结构 以及 前端学习路径 等实用技…...
YOLOv8在Jetson上导出TensorRT引擎(.engine)全流程实操:从ONNX转换到INT8/FP16量化加速
YOLOv8在Jetson平台上的TensorRT引擎部署与量化加速实战指南 当目标检测模型需要部署到边缘计算设备时,性能优化往往成为最关键的技术挑战。本文将深入探讨如何将YOLOv8模型高效转换为Jetson平台专用的TensorRT引擎,并通过INT8/FP16量化技术实现推理速度…...
XC7Z010-2CLG400I Xilinx Zynq-7000 FPGA
XC7Z010-2CLG400I 可以理解为一颗“ARM 处理器 FPGA 可编程逻辑”合在一起的 SoC。它属于 Xilinx (赛灵思 AMD )Zynq-7000 家族里的 Z-7010 器件,核心特点就是把 双核 Arm Cortex-A9 MPCore 处理系统(PS) 和 7 系列可编程逻辑&am…...
别再死记硬背了!用USB的NRZI编码和Bit-Stuffing,搞懂自同步通信的底层逻辑
从NRZI编码到自同步通信:USB协议中的时钟同步艺术 当你在调试USB设备时突然发现数据包丢失,或是试图理解为什么USB仅用两根数据线就能实现高速通信,背后的秘密就藏在NRZI编码和位填充(Bit-Stuffing)这两个看似简单的技…...
用Tableau分析酒店数据:手把手教你做地区均价条形图和价格等级饼图
用Tableau分析酒店数据:手把手教你做地区均价条形图和价格等级饼图 酒店行业的数据分析往往需要快速洞察不同地区的价格分布和消费层级特征。作为全球领先的商业智能工具,Tableau能以直观的可视化方式呈现这些关键指标。本文将带你从零开始,用…...
实战分享:如何将YOLOv8+TensorRT推理引擎封装成DLL,并在Qt 5.9.9项目中轻松调用(附完整源码)
工业级视觉方案:YOLOv8模型TensorRT加速与Qt跨平台集成实战 在智能制造和嵌入式视觉领域,如何将训练好的深度学习模型高效部署到实际应用中一直是工程师面临的挑战。本文将详细介绍从YOLOv8模型转换到最终Qt应用集成的全流程,重点解决Windows…...
ViGEmBus虚拟游戏控制器驱动:从零开始掌握Windows手柄模拟技术
ViGEmBus虚拟游戏控制器驱动:从零开始掌握Windows手柄模拟技术 【免费下载链接】ViGEmBus Windows kernel-mode driver emulating well-known USB game controllers. 项目地址: https://gitcode.com/gh_mirrors/vi/ViGEmBus 想在Windows电脑上使用任意手柄玩…...
026 AI 漫剧工具推荐手册,附详细使用教程
2025 年,中国动画微短剧市场规模达 189.8 亿元,同比增长 276.3%,预计 2030 年将突破 850 亿元。与此同时,2026 年 AI 漫剧用户规模将从 1.2 亿飙升至 2.8 亿,市场规模有望突破 240 亿元。这一组数据有多震撼࿱…...
像素空间解算赋能,跳出UWB硬件受限技术天花板——四无架构+孪生定位重构行业格局
像素空间解算赋能,跳出UWB硬件受限技术天花板——四无架构孪生定位重构行业格局镜像视界浙江科技有限公司,以像素空间解算技术为核心突破点,彻底跳出传统UWB有源定位的硬件受限技术天花板,独创“四无架构”轻量化落地体系…...
