文件的内容如下:
1北塘有功功率
,7000
2武清机组
,80000
............
结果文件是这样的:
1北塘有功功率 ,7000
2武清机组,80000
使用文件操作函数打开文件,读取信息,重新写入并覆盖原文件,写的时候当遇到需要合并的两行时,忽略两之间的换行符。
例程:
#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就是你想要文件追问
#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
..........
这样您有办法解决嘛?!