文本处理,下载的txt文档每行长短不一。
#include<stdio.h>
#include"stdlib.h"
void Merge_Line(char line[]);
char merged[5120];//20行整合一行
char pu[2]={10,0};
int j=3;
inline char symbol(int j){
return (merged[j] == -84 && merged[j-1] == -93) || (merged[j] >= -93 && merged[j-1] <= -95);
}
char As_num(char line){
return line>=48 && line<=57;
}
int main()
{
// char StrLine[256];//每行限制中文128个,英文字母256个
char StrLine[1024];//每行限制中文512个,英文字母1024个
char pu[2]={10,0};
int i;
FILE *in,*out;
in = fopen("C:\\Temp\\lark\\78.txt","r");
// in = fopen("C:\\Temp\\lark\\line_ansi.txt","r");
out = fopen("C:\\Temp\\lark\\560.txt","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) || //只有回车,删除此行
(StrLine[0]==32 && StrLine[1]==10 && StrLine[2]==0)||//空格+回车
(StrLine[0]==32 && StrLine[1]==32 && StrLine[5]==10 && StrLine[6]==0)){//页码
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);
/
in = fopen("C:\\Temp\\lark\\560.txt","r");
out = fopen("C:\\Temp\\lark\\780.txt","w");
while(!feof(in)){ //fread fwrite 和 getw putw什么区别?
fgets(StrLine,1024,in);
if(As_num(StrLine[0]) && StrLine[1]==46 && As_num(StrLine[2]))
fputs(pu,out);
else if(As_num(StrLine[0]) && As_num(StrLine[1]) && StrLine[2]==46 && As_num(StrLine[3]))
fputs(pu,out);
fputs(StrLine,out);
}
///
return 0;
}