我有一个带有一堆单词的文件(用空格分隔)。我试图得到第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,这给了我一个错误。我究竟做错了什么?
同样,我愿意接受有关更好方法的建议。
答案 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;
}