C语言读写文件和C++读写文件

  1. 文本文件读写

    • "r":只读模式打开文本文件,文件必须存在。
    • "w":写入模式打开文本文件,如果文件不存在则创建新文件。
    • "a":追加模式打开文本文件,如果文件不存在则创建新文件。
    • "r+":读写模式打开文本文件,文件必须存在。
    • "w+":读写模式打开文本文件,如果文件存在则清空文件内容,如果文件不存在则创建新文件。
    • "a+":读写模式打开文本文件,如果文件存在则在文件末尾追加内容,如果文件不存在则创建新文件。
  2. 二进制文件读写

    • "rb":只读模式打开二进制文件,文件必须存在。
    • "wb":写入模式打开二进制文件,如果文件不存在则创建新文件。
    • "ab":追加模式打开二进制文件,如果文件不存在则创建新文件。
    • "r+b":读写模式打开二进制文件,文件必须存在。
    • "w+b":读写模式打开二进制文件,如果文件存在则清空文件内容,如果文件不存在则创建新文件。
    • "a+b":读写模式打开二进制文件,如果文件存在则在文件末尾追加内容,如果文件不存在则创建新文件。

C语言读取文件示例:(有文件则读取,将文件中的大写字母转换为小写字母,没有则创建,写入,在转换) 

#include <stdio.h>int main() {FILE* original_file, * temp_file;errno_t err;char buffer[100];// 使用 fopen_s() 函数打开原始文件(有则打开,没有则创建)err = fopen_s(&original_file, "./example.txt", "r");if (err != 0) {// 文件不存在,创建新文件并写入大写字母err = fopen_s(&original_file, "./example.txt", "w");if (err != 0) {printf("无法创建文件\n");return 1;}fprintf(original_file, "ABCDEFGHIJKLMNOPQRSTUVWXYZ\n");}// 打开临时文件errno_t err1 = fopen_s(&temp_file, "./temp.txt", "w");if (err1 != 0) {printf("无法打开,错误码:%d\n", err1);return 1;}// 读取原始文件内容并修改后写入临时文件while (fgets(buffer, sizeof(buffer), original_file) != NULL) {// 进行内容修改(这里仅作示例,实际修改逻辑根据需求编写)// 这里将示例中的大写字母转换为小写字母for (int i = 0; buffer[i] != '\0'; ++i) {if (buffer[i] >= 'A' && buffer[i] <= 'Z') {buffer[i] += 32;  // 转换为小写字母}}// 将修改后的内容写入临时文件fputs(buffer, temp_file);}// 关闭原始文件和临时文件fclose(original_file);fclose(temp_file);// 删除原始文件remove("example.txt");// 将临时文件重命名为原始文件rename("temp.txt", "example.txt");printf("文件修改完成\n");return 0;
}

 C++示例:

#include <iostream>
#include <fstream>
#include <cctype>
#include<string>int main() {// 原始文件名std::string filename = "original_file.txt";// 打开文件进行读取和转换std::ifstream inputFile(filename);if (!inputFile.is_open()) {// 如果文件不存在,则创建新文件并写入初始内容std::ofstream outputFile(filename);if (!outputFile.is_open()) {std::cerr << "无法创建文件" << std::endl;return 1;}outputFile << "INITAL CONTENT FOR new file." << std::endl;outputFile.close();// 再次打开文件进行读取和转换inputFile.open(filename);if (!inputFile.is_open()) {std::cerr << "无法打开文件" << std::endl;return 1;}}// 读取并转换文件内容std::string content,before;char ch;while (inputFile.get(ch)) {before.push_back(ch);if (std::isupper(ch)) { // 如果是大写字母,则转换为小写字母ch = std::tolower(ch);}else if (std::islower(ch)) { // 如果是小写字母,则转换为大写字母ch = std::toupper(ch);}content.push_back(ch);}// 关闭文件inputFile.close();// 写入转换后的内容到文件std::ofstream outputFile(filename);if (!outputFile.is_open()) {std::cerr << "无法打开文件" << std::endl;return 1;}outputFile << content;outputFile.close();std::cout << "转换前的文件内容:" << std::endl;std::cout << before << std::endl;// 打印转换后的内容std::cout << "转换后的文件内容:" << std::endl;std::cout << content << std::endl;return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/1237.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024-4-狼道

2024-4-狼道 2024-4-9 宋犀堃&#xff08;堃通坤&#xff0c;多用于人名&#xff09; fatux&#xff1a; 做人当如狗&#xff0c;和蔼可亲&#xff1b;做事当如狼&#xff0c;专注果决。 狼道 智慧生存的强者法则 走向卓越的成功之道 狼道&#xff0c;是追求卓越的野心&am…

C++_特殊类的设计和单例模式

文章目录 学习目标&#xff1a;1.请设计一个类&#xff0c;不能被拷贝2. 请设计一个类&#xff0c;只能在堆上创建对象3. 请设计一个类&#xff0c;只能在栈上创建对象4. 请设计一个类&#xff0c;不能被继承5. 请设计一个类&#xff0c;只能创建一个对象(单例模式) 特殊类的设…

达梦数据库的DMRMAN工具-管理备份(备份集查看)

达梦数据库的DMRMAN工具-管理备份&#xff08;备份集查看&#xff09; 管理备份一个重要的目的是删除不再需要的备份。DMRMAN 工具提供 SHOW、 CHECK、REMOVE、 LOAD 等命令分别用来查看、校验、删除和导出备份集。下文将对这些命令进行详细介绍。若命令中指定了 dm.ini&#…

如何在原生项目中集成flutter

两个前提条件&#xff1a; 从flutter v1.17版本开始&#xff0c;flutter module仅支持AndroidX的应用在release模式下flutter仅支持一下架构&#xff1a;x84_64、armeabi-v7a、arm6f4-v8a,不支持mips和x86;所以引入flutter前需要在app/build.gradle下配置flutter支持的架构 a…

vue3-setup与vue2的data共存

文章目录 前言一、vue3的setup响应式状态生命周期钩子示例注意事项 二、与vue2 的data 共存setup 与 data 的区别setup 与 data 的共存注意事项示例 前言 vue3 setup 学习 一、vue3的setup Vue 3 的 setup 函数是 Composition API 的核心&#xff0c;它提供了一种新的方式来使…

《设计模式之美》- 总结

《设计模式之美》- 总结 第一章 概述 1.1 为什么学习代码设计 编写高质量的代码应对复杂代码的开发程序员的基本功职业发展的必备技能 1.2 如何评价代码的质量 1.2.1 可维护性 可维护性代码的特性&#xff1a;代码简洁、可读性好、可扩展性好代码分层结构清晰、模块化程度…

maven问题汇总

​ 1、报错 failed to transfer from http://0.0.0.0/ during a previous attempt. com.byd.xxx:xxx-parent:pom:1.1.0-SNAPSHOT failed to transfer from http://0.0.0.0/ during a previous attempt. This failure was cached in the local repository and resolution is no…

【Pytorch】PytorchCPU版或GPU报错异常处理(10X~4090D)

Pytorch为CPU版或GPU使用报错异常处理 文章目录 Pytorch为CPU版或GPU使用报错异常处理0.检查阶段1. 在conda虚拟环境中安装了torch2.卸载cpuonly3.从tsinghua清华源安装不完善误为cpu版本4.用tsinghua清华源安装成cpu错误版本5.conda中torch/vision/cudatoolkit版本与本机cuda版…

探索Java设计模式:组合模式

探索Java设计模式&#xff1a;深入理解与实践组合模式 组合模式&#xff08;Composite Pattern&#xff09;是一种结构型设计模式&#xff0c;它将对象组织成树形结构&#xff0c;以表示“部分-整体”的层次关系&#xff0c;并允许客户端以一致的方式处理单个对象和对象集合。…

Python 计算给定公式的真值表

在Python中&#xff0c;计算给定逻辑公式的真值表可以通过编写一个简单的函数来实现&#xff0c;该函数遍历所有可能的输入变量组合&#xff0c;并计算表达式的值。以下是一个使用Python计算逻辑表达式真值表的示例&#xff1a; def calculate_truth_table(variables, express…

LeetCode - 283.移动零

题目链接&#xff1a; LeetCode - 283.移动零 题目分析&#xff1a; ​​​​​ 题解代码&#xff1a; #include<iostream> #include<vector> using namespace std;class Solution { public:void moveZeroes(vector<int>& nums) {for (int cur 0, des…

【GitBlit】Windows搭建Git服务器详细教程

前言 如果公司或个人想在 Windows 环境下搭建私有的 Git 服务器&#xff0c;那么这个开源的 GitBlit 是一个不错的选择。 Gitblit 是一个开源纯 Java 的用于管理、查看和服务 Git 存储库。它是一个小型的托管集中式存储库工具。支持 SSH、HTTP 和 GIT 协议&#xff0c;开箱即…

Java+springboot开发的医院智能导诊服务系统源码 自动兼容小程序与H5版本

智能导诊系统 一、什么是智慧导诊系统&#xff1f; 智慧导诊系统是一种医院使用的引导患者自助就诊挂号、精准推荐科室、引导患者挂号就诊的系统。该系统结合医院挂号及就诊的HIS系统&#xff0c;为患者带来全流程的信息指引提醒&#xff0c;可以在全院区构建一个精细化、移动…

IP-guard getdatarecord 存在任意文件读取

声明 本文仅用于技术交流&#xff0c;请勿用于非法用途 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;文章作者不为此承担任何责任。 一、产品介绍 IP-guard是由溢信科技股份有限公司开发的一款终端安全管…

redis的订阅与发布功能

1&#xff1a;yml配置 server:port: 8082 spring:application:name: order-nacosredis:host: 127.0.0.1password: 123456database: 0 logging:level:root: info2&#xff1a;pom.xm依赖 <parent><groupId>org.springframework.boot</groupId><artifactId…

x-cmd ai | x openai - 用于发送 openai API 请求,以及与 ChatGPT 对话

介绍 Openai 模块是 Openai 大模型 Chatgpt 3 和 ChatGPT 4 命令行实现。x-cmd 提供了多个不同平台间多种 AI 大模型的调用能力。无论是本地模型还是 Web 服务上的模型&#xff0c;用户都可以在不同的 AI 大模型间直接无缝切换&#xff0c;并能把之前的聊天记录发送给新的大模…

CSS3 伪元素与伪类选择器区别、详解与应用实例

伪元素与伪类两者都是通过在选择器后附加一个特定的关键字来定义&#xff0c;遵循相似的语法规则&#xff0c;并在 CSS 规则块中设置相应的样式。伪元素 能够通过 content 属性添加或替换内容。例如&#xff0c;:before 和 :after 可以插入文本、图像或其他生成的内容。伪类 仅…

Tomcat核心组件深度解析

Server组件 Service组件 连接器Connector组件 容器Container组件

【研发管理】产品经理知识体系-产品创新管理

导读&#xff1a; 产品创新管理对企业的发展具有深远的影响&#xff0c;它不仅是企业保持竞争优势的关键&#xff0c;也是推动企业持续稳定发展的重要动力。因此&#xff0c;企业应高度重视产品创新管理&#xff0c;并采取有效的策略和方法来推动产品创新活动的开展。对于产品经…

第20天:信息打点-红蓝队自动化项目资产侦察企查产权武器库部署网络空间

第二十天 一、工具项目-红蓝队&自动化部署 自动化-武器库部署-F8x 项目地址&#xff1a;https://github.com/ffffffff0x/f8x 介绍&#xff1a;一款红/蓝队环境自动化部署工具,支持多种场景,渗透,开发,代理环境,服务可选项等.下载&#xff1a;wget -O f8x https://f8x.io…