5

ファイル内の2つの特定の単語を行ごとに検索し、存在する場合は「Found!」と出力する必要があります。

これはfile.txtです(4つの列があります)

bill gates 62bill microsoft 
beyonce knowles 300mill entertainment 
my name -$9000 student

以下は私が持っていたアイデアですが、うまくいかないようです

char firstname[];
char lastname[];
char string_0[256];

file = fopen("file.txt","r+");

while((fgets(string_0,256,file)) != NULL) {

  //scans the line then sets 1st and 2nd word to those variables
  fscanf(file,"%s %s",&firstname, &lastname);

  if(strcmp(firstname,"beyonce")==0 && strcmp(lastname,"knowles")==0){
    printf("A match has been found");
  }
}

fclose(file);

助けてください。whileループの次の行にポインタが移動していない可能性がありますか?もしそうなら、どうすれば修正できますか?

4

2 に答える 2

4

fscanfを使用して既に読み取りを行ったfile後でを呼び出すのではなく、呼び出しでデータをコピーする変数をfgets呼び出す必要があります。sscanfstring_0fgets

于 2012-04-20T03:19:43.740 に答える
4

1 つの方法は、fget関数を使用して、テキスト内の部分文字列を見つけることです。次のようなことを試してください:

int main(int argc, char **argv)
{
    FILE *fp=fopen(argv[1],"r");
    char tmp[256]={0x0};
    while(fp && fget(tmp, sizeof(tmp), fp))
    {
        if (strstr(tmp, "word1"))
            printf("%s", tmp);
        else if (strstr(tmp, "word2"))
            printf("%s", tmp);
    }
    if(fp) fclose(fp);
    return 0;
}
于 2012-04-20T03:20:50.100 に答える