0

私はtxtファイルを持っているとしましょう:

日付: 11/11/11

デバイス: ボクスター

状態: 良好

コードで単語を検索し (Say Device:)、その単語の後に情報を表示しようとしています (Boxster)。これまでのところ、1 つの単語のみを検索するコードが動作しています。2 つまたは 3 つの単語を検索し、その後に情報を表示できるようにコードを修正するにはどうすればよいですか?

次の形式で情報を表示できればさらに便利です。

ボクスター、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;

}
4

2 に答える 2

0

printf と fgets へのいくつかの変更に注意してください。論理 or|| を使用して、部分文字列に対して複数のチェックを行うことができます。

試す:

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 に答える