2016-10-19 8 views
0

私は単語の束をスペースで区切ってファイルを持っています。私はn番目の単語を取得しようとしています。ファイル内のn番目の単語を返す

私はファイルの各文字をループしています。私はスペースになるとカウンターに1を加えて単語の数を数えます。カウンタの値がnに等しい場合(つまり、必要な単語にある場合)、現在の文字をchar配列に追加します。 nはintなので、sprintfを使ってcharに変換し、strncatを使って文字を単語に追加します。

は、ここでは、コードです:

int n; 
int count = 1; 
char word[100]; 
char converted_char[32]; 

while ((n = fgetc(file)) != EOF) { 
    if ((n) == ' ') 
     count++; 

    if ((count) == wordNumber) 
    { 
     sprintf(converted_char, "%d", n); 
     strncat(word, converted_char, 1); 
    } 
} 

printf("The word is: %s", word); 

問題があり、単語はint型返されます。私は%sを%cに置き換えようとしましたが、これはエラーです。私は間違って何をしていますか?

同様に、これを行うためのより良い方法の提案には公開されています。

+0

あまりにもわかりません。 – Mox

答えて

1

はこれを試してください:uはuは、文字列を分割するためにはstrtokを使用する必要があるとき、これをやっrはなぜ

#include <stdio.h> 

int main(void){ 
    int wordNumber = 3; 
    FILE *file = fopen("data.txt", "r"); 
    int count = 0; 
    char word[100]; 

    while (fscanf(file, "%99s", word) != EOF) { 
     if(++count == wordNumber){ 
      printf("The word is: %s\n", word); 
      break; 
     } 
    } 
    fclose(file); 

    return 0; 
} 
+0

素晴らしい作品です。カウント++なしでどのように動作するかを説明する心ですか? – user2759575

+0

の代わりに '++ count'があります。 – BLUEPIXY

関連する問題