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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用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;

参考技术A #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 );

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

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

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

这样您有办法解决嘛?!

idea 快捷键

本文目的主要用来自己平时查找,多去使用。

功能快捷键解释
UndoCtrl+Z撤销
RedoCtrl+Shift+Z重做
CutCtrl+X剪切
CopyCtrl+C复制
PasteCtrl+V粘贴
Join LinesCtrl+Shift+J将选中的行合并成一行
   
ClassCtrl+N查找类文件
FileCtrl+Shift+N查找文件
LineCtrl+G定位到文件某一行
BackAlt+向左箭头返回至上次光标位置
ForwardAlt+向右箭头返回至后一次光标位置
Last Edit LocationCtrl+Shift+Backspace返回上次编辑位置
Next Edit LocationCtrl+Shift+反斜杠返回后一次编辑位置
DeclarationCtrl+B定位至变量定义的位置
Implementation(s)Ctrl+Alt+B定位至选中类或方法的具体实现
Type DeclarationCtrl+Shift+B直接定位至光标所在变量的类型定义
Super MethodCtrl+U直接定位至当前方法override或者implements的方法定义处
File StructureCtrl+F12显示当前文件的文件结构
File PathCtrl+Alt+F12显示当前文件的路径,并可以方便的将相关父路径打开
Type HierarchyCtrl+H显示当前类的继承层次
Method HierarchyCtrl+Shift+H显示当前方法的继承层次
Call HierarchyCtrl+Alt+H显示当前方法的调用层次
Next Highlighted ErrorF2定位至下一个错误处
Previous Highlighted ErrorShift+F2定位至前一个错误处
Previous OccurrenceCtrl+Alt+向上箭头查找前一个变量共现的地方
Next OccurrenceCtrl+Alt+向下箭头查找下一个变量共现的地方

Move Caret to Code Block EndCtrl+]快速跳转至代码块的结尾处
Move Caret to Code Block StartCtrl+[同上,快速跳至代码块的开始出
Complete Current StatementCtrl+Shift+Enter使代码语句完整
Start New LineShift+Enter在当前行的下方开始新行
Start New Line Before CurrentCtrl+Alt+Enter在当前行上方插入新行
Delete to Word EndCtrl+Delete删除光标所在至单词结尾处的所有字符
Delete to Word StartCtrl+BackSpace删除光标所在至单词开头的所有字符
Move Caret to Previous WordCtrl+向左箭头将光标移至前一个单词
Move Caret to Next WordCtrl+向右箭头将光标移至后一个单词
Scroll UpCtrl+向上箭头向上滚动一行
Scroll DownCtrl+向下箭头向下滚动一行
Extend SelectionCtrl+W选中整个单词
Toggle CaseCtrl+Shift+U切换大小写
FindCtrl+F在当前文件中查找
ReplaceCtrl+R替换字符串
Find in PathCtrl+Shift+F在全局文件中查找字符串
Replace in PathCtrl+Shift+R在全局中替换字符串
Find UsagesAlt+F7查找当前变量的使用,并列表显示
Show UsagesCtrl+Alt+F7查找当前变量的使用,并直接对话框显示
Find Usages in FileCtrl+F7在文件中查找符号的使用
Highlight Usages in FileCtrl+Shift+F7在文件中高亮显示变量的使用

以上是关于用C语言怎么把文件中的两行合并成一行的主要内容,如果未能解决你的问题,请参考以下文章

如何把TXT内的每9行合并成一行

SQL怎么把多条数据合并成一条数据?

shell 中实现多行或两行合并成一行实现方法

CoDeSys 中如何 把两个word合并成一个real

咋么将TXT里面的N行文字,每10行合并成一行 高分悬赏 1000分 之后会追加

两个DIV如何浮动在一行?