加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在C编程中将文本文件中的部分行提取到新文件中

发布时间:2020-12-16 09:41:16 所属栏目:百科 来源:网络整理
导读:我试图从文本文件中提取一行的部分,并在UNIX平台下的C编程中将其输出到一个新文件中.例如,我有file1.txt如下: 设备:ABCDE1 日期:12/12/12 操作符= John Doe 我希望它在file2.txt中显示为: ABCDE1,12 / 12/12,John Doe. 这是我到目前为止的代码,我得到了
我试图从文本文件中提取一行的部分,并在UNIX平台下的C编程中将其输出到一个新文件中.例如,我有file1.txt如下:

设备:ABCDE1

日期:12/12/12

操作符= John Doe

我希望它在file2.txt中显示为:

ABCDE1,12 / 12/12,John Doe.

这是我到目前为止的代码,我得到了开头并写入文件部分,但是无法弄清楚如何在“Device:”之后提取信息,而不显示“Divice:”它自己.我的代码只复制file1的第一行,并将其放在文件2中:

#include "stdio.h"
main()
{
    FILE *fs,*ft;
    char ch ;
char file[100]="" ;
char Device [100];
char Date [80];

printf ("Enter file name and directory:");
scanf ("%s",&file);

    fs = fopen (file,"r") ;
    if ( fs == NULL )
    {
           puts ( "Cannot open source file" ) ;
           exit( ) ;
    }

    ft = fopen ( "file2.txt","w" ) ;
    if ( ft == NULL )
    {
           puts ( "Cannot open target file" ) ;
           fclose ( fs ) ;
           exit( ) ;
    }


fscanf(fs,"%s %s",Device,Date);
fprintf(ft,"%s %sn",Date);


    fclose ( fs ) ;
    fclose ( ft ) ;
return 0;
}

fscanf()是一个很好的命令吗?或者是否有任何其他建议的命令来使这项工作?提前致谢.

解决方法

fscanf()是一种可能的功能.你会得到一些“John Doe”的问题,因为scanf()系列函数将%s视为“空格分隔的字符串” – 所以你会读到“John”,然后下一步就会得到Doe等等在下一行,这可能不是你想要的.

fscanf()本身有很多方法可以解决这个问题.或者,您可以使用fgets()读取整行,然后使用一些字符串函数将其拆分.有趣的是,这些线条的格式略有不同,这使得生活更具挑战性.

我故意不告诉你到底该怎么做,因为我非常肯定你为什么这样做是为了学习.你从别人的工作中学到了什么.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读