返回文件中的第n个单词

时间:2016-10-19 01:15:55

标签: c

我有一个带有一堆单词的文件(用空格分隔)。我试图得到第n个字。

我遍历文件的每个字符。我通过在计数器到达空间时将1加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。我尝试用%c替换%s,这给了我一个错误。我究竟做错了什么?

同样,我愿意接受有关更好方法的建议。

1 个答案:

答案 0 :(得分:1)

试试这个:

#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;
}