2012-04-20 3 views
4

ファイル内の2つの単語を1行ずつ検索し、存在する場合は "Found!"を出力する必要があります。助けてくださいC初心者:C内の特定の単語を1行ずつ検索する方法

これは、次の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ループの次の行に移動していない可能性がありますか?もしそうなら、どうすれば修正できますか?代わりに、あなたはすでにfgetsでそれから読んだ後filefscanfを呼び出すので

+0

あなたは、STRING_0で何をしている、sscanf関数を使用(string_9を、「%S%S&ファーストネーム、および姓) – subbul

+0

今、私は何もしていなかったことがわかります。トムDignanは私を助けた。おかげ – thecodefather

答えて

4

、あなたはあなたのfgets呼び出しでにデータをコピーしているstring_0変数にsscanfを呼び出す必要があります。

+0

感謝の男、 出来た。 – thecodefather

2

このようなものを試してみてください。

int main(int argc, char **argv) 
{ 
    FILE *fp=fopen(argv[1],"r"); 
    char tmp[256]={0x0}; 
    while(fp!=NULL && fget(tmp, sizeof(tmp), fp)!=NULL) 
    { 
     if (strstr(tmp, "word1") 
      printf("%s", tmp); 
       else if (strstr(tmp, "word2") 
      printf("%s", tmp); 
    } 
    if(fp!=NULL) fclose(fp); 
    return 0; 
} 
関連する問題