0

假设我有一个 txt 文件:

日期:11/11/11

设备:Boxster

状态:好

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

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

Boxster,2011 年 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;

}
4

2 回答 2

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 中支持正则表达式,您可能能够实现搜索的正则表达式。

于 2012-12-28T00:45:05.663 回答
0

@DaveWang

这是我认为可以很好地满足您的要求的东西:https ://www.dropbox.com/sh/108lz7k6z50kq7v/kmj6NYsuMT

让我知道它是否有帮助

于 2012-12-29T05:17:56.253 回答