多行处理
#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;
}