在C中搜索多个单词,并以逗号分隔后显示其后的信息

时间:2012-12-27 23:45:14

标签: c printf fgets string-search

假设我有一个txt文件:

日期:11/11/11

设备:Boxster

状态:好

我正在尝试让我的代码搜索一个单词(Say Device :),然后显示该单词后面的信息(Boxster)。到目前为止,我的代码只能搜索一个单词。我如何修复代码,以便它可以搜索2或3个单词,并在它们之后显示信息?

如果我能按以下格式显示信息会更有帮助:

Boxster,11/11/11,好。

这是我的代码,提前谢谢!

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main() {

    char file[100];
    char c[100];

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

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

    FILE * ft = fopen ( "book5.txt", "w" ) ;
    if ( ft == NULL )
    {
        puts ( "Cannot open target file" ) ;
        exit( 1 ) ;
    }

    while(!feof(fs)) {
        char *Data;
        char *Device;
        char const * rc = fgets(c, 99, fs);

        if(rc==NULL) { break; }

        if((Data = strstr(rc, "Date:"))!= NULL)
            printf(Data+7);

        if((Data = strstr(rc, "Device:"))!=NULL)
            printf(Device+6);
    }

    fclose ( fs ) ;
    fclose ( ft ) ;

    return 0;

}

2 个答案:

答案 0 :(得分:0)

注意printf和fgets的一些更改您可以使用逻辑或||对子字符串进行多次检查。

尝试:

char rc[120]={0x0};
while(fgets(rc, sizeof(rc), fs)!=NULL) {
        char *Data;
        char *Device;

        if((Data = strstr(rc, "Date:"))!= NULL)
            printf("%s\n", &Data[7]);

        if((Device = strstr(rc, "Device:"))!=NULL ||
            (Device = strstr(rc, "String:"))!=NULL ||
            (Device = strstr(rc, "foo:"))!=NULL )
            printf("%s\n", &Device[6]);
    }

如果您了解有关搜索的更多信息,则可以使用正则表达式进行搜索,如果您的系统支持C语言。

答案 1 :(得分:0)

@DaveWang

我认为以下内容可以满足您的要求:https://www.dropbox.com/sh/108lz7k6z50kq7v/kmj6NYsuMT

如果有帮助,请告诉我