【文本处理】多行整合为一行

本文介绍了一个使用C语言编写的程序,该程序能够将文本文件中的多行内容按特定规则合并成一行,并输出到另一个文件中。主要通过判断字符编码来识别不同类型的行,并进行相应的合并操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

多行处理


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

void Merge_Line(char line[]);

char merged[5120];//20行整合一行
int j=3;

inline char symbol(int j){
	return	(merged[j] == -84 && merged[j-1] == -93) || (merged[j] >= -93 && merged[j-1] <= -95);
}

int main()
{
	char StrLine[256];//每行限制中文128个,英文字母256个
	int i;
	FILE *in,*out;

	in = fopen("C:\\Temp\\lark\\line_ansi.txt","r");
	out = fopen("C:\\Temp\\lark\\parse_tab.log","w");

	while(!feof(in)){	//fread fwrite 和 getw putw什么区别?
		fgets(StrLine,1024,in);
		//-----------//所有行先放merged再fputs,空行除外
		if((merged[j-3] < 0 || symbol(j-3) ) && StrLine[0] < 0){
			i=0;j=j-2;
			do{merged[j++] = StrLine[i];}while(StrLine[i++] != 0);
		}
		else{
			fputs(merged,out);
			if(StrLine[0]==10 && StrLine[1]==0){//空行,j<3
				fputs(StrLine,out);
				j=3;merged[0]=0;
			}
			else{
				j=0;
				do{merged[j] = StrLine[j];}while(StrLine[j++] != 0);//j在merged[0+1]位
			}
		}
		//-----------
	}
	fputs(merged,out);//最后一行

	fclose(in);
	fclose(out);
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值