按行依次处理数据的文件操作(C语言版)

2024-01-01 16:28

本文主要是介绍按行依次处理数据的文件操作(C语言版),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

按行依次处理数据的文件操作(C语言版)

在这里插入图片描述

这段代码的目的是处理多个文件,为每个文件创建一个新文件,将以 ‘r’ 开头的行添加 “./” 前缀,并将修改后的内容写入新文件。在main函数中,通过调用process函数,逐个处理了一系列文件。在处理文件时,程序创建一个新的文件名,然后逐行读取原文件内容,对以 ‘r’ 开头的行进行修改,并将修改后的内容写入新文件。整个程序的目标是在每一行开头加上 “./”。具体的细节可以参看代码的注释。

#include <stdlib.h>
#include <stdio.h>
#include <string.h>// 定义一个函数,该函数用于处理文件
void process(char *name) {// 打开文件,以读写方式打开FILE *fp = fopen(name, "r+");if (fp == NULL) {printf("%s 无法打开!\n", name);exit(EXIT_FAILURE); // 如果打开失败,退出程序}// 计算文件名的长度int i, len = strlen(name);// 创建一个新的文件名,将原文件名加下划线和字符 'p'char tname[len + 2];for (i = 0; i < len; i++) {tname[i] = name[i];}tname[i++] = '_';tname[i] = 'p';tname[i + 1] = '\0'; // 字符串以 null 结尾// 以写入方式打开新文件FILE *tfp = fopen(tname, "w");if (tfp == NULL) {fclose(fp);printf("%s 无法打开!\n", tname);exit(EXIT_FAILURE); // 如果打开失败,退出程序}// 缓冲区,用于存储每一行的内容char buffer[200];// 逐行读取原文件内容,并将修改后的内容写入新文件while (fgets(buffer, sizeof(buffer), fp) != NULL) {if (buffer[0] != 'r') {continue; // 如果不是以 'r' 开头的行,则跳过}fprintf(tfp, "./%s", buffer); // 在新文件中写入修改后的内容}// 关闭原文件和新文件fclose(fp);fclose(tfp);
}int main() {// 要处理的文件列表const char *files[] = {"runAll_CVRP_Augerat_A", "runAll_CVRP_Augerat_B", "runAll_CVRP_Augerat_P",// 添加其他文件...};// 依次处理每个文件for (int i = 0; i < sizeof(files) / sizeof(files[0]); i++) {process(files[i]);}return 0;
}

这篇关于按行依次处理数据的文件操作(C语言版)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/559836

相关文章

Python使用getopt处理命令行参数示例解析(最佳实践)

《Python使用getopt处理命令行参数示例解析(最佳实践)》getopt模块是Python标准库中一个简单但强大的命令行参数处理工具,它特别适合那些需要快速实现基本命令行参数解析的场景,或者需要... 目录为什么需要处理命令行参数?getopt模块基础实际应用示例与其他参数处理方式的比较常见问http

Java Response返回值的最佳处理方案

《JavaResponse返回值的最佳处理方案》在开发Web应用程序时,我们经常需要通过HTTP请求从服务器获取响应数据,这些数据可以是JSON、XML、甚至是文件,本篇文章将详细解析Java中处理... 目录摘要概述核心问题:关键技术点:源码解析示例 1:使用HttpURLConnection获取Resp

C++如何通过Qt反射机制实现数据类序列化

《C++如何通过Qt反射机制实现数据类序列化》在C++工程中经常需要使用数据类,并对数据类进行存储、打印、调试等操作,所以本文就来聊聊C++如何通过Qt反射机制实现数据类序列化吧... 目录设计预期设计思路代码实现使用方法在 C++ 工程中经常需要使用数据类,并对数据类进行存储、打印、调试等操作。由于数据类

Java中Switch Case多个条件处理方法举例

《Java中SwitchCase多个条件处理方法举例》Java中switch语句用于根据变量值执行不同代码块,适用于多个条件的处理,:本文主要介绍Java中SwitchCase多个条件处理的相... 目录前言基本语法处理多个条件示例1:合并相同代码的多个case示例2:通过字符串合并多个case进阶用法使用

Java实现优雅日期处理的方案详解

《Java实现优雅日期处理的方案详解》在我们的日常工作中,需要经常处理各种格式,各种类似的的日期或者时间,下面我们就来看看如何使用java处理这样的日期问题吧,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言一、日期的坑1.1 日期格式化陷阱1.2 时区转换二、优雅方案的进阶之路2.1 线程安全重构2

SpringBoot使用GZIP压缩反回数据问题

《SpringBoot使用GZIP压缩反回数据问题》:本文主要介绍SpringBoot使用GZIP压缩反回数据问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot使用GZIP压缩反回数据1、初识gzip2、gzip是什么,可以干什么?3、Spr

Python处理函数调用超时的四种方法

《Python处理函数调用超时的四种方法》在实际开发过程中,我们可能会遇到一些场景,需要对函数的执行时间进行限制,例如,当一个函数执行时间过长时,可能会导致程序卡顿、资源占用过高,因此,在某些情况下,... 目录前言func-timeout1. 安装 func-timeout2. 基本用法自定义进程subp

Java字符串操作技巧之语法、示例与应用场景分析

《Java字符串操作技巧之语法、示例与应用场景分析》在Java算法题和日常开发中,字符串处理是必备的核心技能,本文全面梳理Java中字符串的常用操作语法,结合代码示例、应用场景和避坑指南,可快速掌握字... 目录引言1. 基础操作1.1 创建字符串1.2 获取长度1.3 访问字符2. 字符串处理2.1 子字

Java字符串处理全解析(String、StringBuilder与StringBuffer)

《Java字符串处理全解析(String、StringBuilder与StringBuffer)》:本文主要介绍Java字符串处理全解析(String、StringBuilder与StringBu... 目录Java字符串处理全解析:String、StringBuilder与StringBuffer一、St

SpringBoot集成Milvus实现数据增删改查功能

《SpringBoot集成Milvus实现数据增删改查功能》milvus支持的语言比较多,支持python,Java,Go,node等开发语言,本文主要介绍如何使用Java语言,采用springboo... 目录1、Milvus基本概念2、添加maven依赖3、配置yml文件4、创建MilvusClient