所以我有一个这样的文本文件:
零三二一五零零五七..等等
而且有很多,准确地说是 9054 个单词
我的想法是创建一个包含 9054 个空格的字符数组并将其存储在其中,这是我目前所做的:
#include <stdio.h>
int main(void)
{
char tmp;
int i = 0;
int j = 0;
char array[44000];
FILE *in_file;
in_file = fopen("in.txt", "r");
// Read file in to array
while (!feof(in_file))
{
fscanf(in_file,"%c",&tmp);
array[i] = tmp;
i++;
}
// Display array
while (j<i)
{
printf("%c",array[j]);
j++;
}
fclose(in_file);
while(1);
return 0;
}
问题是我不知道如何存储单词,因为我所做的是将每个字符存储到数组中,因此它变成了一个大约 44000 的数组。我怎样才能使数组存储单词呢?
我也不知道 feof 函数的作用,尤其是那一行
while (!feof(in_file))
这行到底是什么意思?抱歉,我仍处于学习 C 的初级阶段,我尝试查找 feof 的功能,但找不到太多内容
最佳答案
与其检查
feof()
,它会告诉您文件结尾是否发生在上一个输入操作中,而是检查的结果>fscanf()
使用
"%s"
读取“words”并限制要读取的char
的最大数量。char buf[100]; fscanf(in_file,"%99s",buf);
综合起来:
#define WORD_SIZE_MAX 20
#define WORD_COUNT_MAX 10000
char array[WORD_COUNT_MAX][WORD_SIZE_MAX];
unsigned word_i = 0;
for (i=0; i<WORD_COUNT_MAX; i++) {
if (fscanf(in_file,"%19s", word_list[i]) != 1) {
break;
}
}
另一种方法是几乎按原样使用 OP 代码。将整个文件读入 1 个数组。然后在打印时,跳过空白。
关于c - 使用feof将文本文件中的单词存储到char数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34054457/