用C语言怎么把文件中的两行合并成一行

文件的内容如下:
1北塘有功功率
,7000
2武清机组
,80000
............

结果文件是这样的:
1北塘有功功率 ,7000
2武清机组,80000

    使用文件操作函数打开文件,读取信息,重新写入并覆盖原文件,写的时候当遇到需要合并的两行时,忽略两之间的换行符

    例程:

    #include <stdio.h>
    #include <stdlib.h>
    #define K 5    //合并第六行第七行
    FILE *p;//文件指针
    int i,j;
    char a[1000][1000];
    int main(){
        p = fopen("文件名称", "r");//第一个字符串是你文件路径,路径中的\要写成\\,文件名必须带后缀
        for(i=0;fgets(s[i],1000,p)!=EOF;i++)//EOF为文件尾(end of file),读取文本中的数据  
        merge(); //合并操作
        fclose(p);
        p = fopen("文件名称", "w");//以写入方式重新打开
        for(j=0;j<i;j++) {
          fprintf(p,s[j]);
          if(j!=K)fprintf(p,"\n"); //当不为合并行时,输出一个换行符
        }
        fclose(p)
        return 0;
    }

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-03-09
#include <string.h>
#include <stdio.h>
void main()
{
FILE *fp1,*fp2;
char line[1024];
int n=0;
fp1=fopen("file.txt","r");
if ( fp1==NULL ) return ;
fp2=fopen("file1.txt","w");
while( fgets(line,sizeof(line),fp1) )
{
n++;
if( n%2 )
line[strlen(line)-1]='\0'; //去掉回车
fprintf(fp2,"%s", line );
}
fclose(fp1);
fclose(fp2);
}
生成的file1.txt就是你想要文件追问

不好意思我没描述清楚。我的文件中不是这么有规律的,有的行就是显示正确的如:

1北塘有功功率
,7000
2武清机组
,80000
3 大港燃气,9000
4北疆无功
,9000
..........

这样您有办法解决嘛?!

追答

while( fgets(line,sizeof(line),fp1) )
{
line[strlen(line)-1]='\0'; //去掉回车
if ( line[0] != ',' && n++ ) //首位不是逗号,且,不是第一行,则先输出回车
fprintf(fp2,"\n");
fprintf(fp2,"%s", line );
}

本回答被提问者和网友采纳
第2个回答  2015-03-09
很简单。一个字符串一个字符的读取,遇到第奇数个换行符号,替换成空格,第偶数个跳过。然后保存以后重新打开就可以了。要求必须是你这样格式的文件追问

不好意思我没描述清楚。我的文件中不是这么有规律的,有的行就是显示正确的如:

1北塘有功功率
,7000
2武清机组
,80000
3 大港燃气,9000
4北疆无功
,9000
..........

这样您有办法解决嘛?!

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网