c - 使用feof将文本文件中的单词存储到char数组中

标签 c arrays text storage

所以我有一个这样的文本文件:

零三二一五零零五七..等等

而且有很多,准确地说是 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 的功能,但找不到太多内容

最佳答案

  1. 与其检查 feof(),它会告诉您文件结尾是否发生在上一个输入操作中,而是检查 的结果>fscanf()

  2. 使用 "%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/

相关文章:

c - C中的宏和函数有什么区别?

c - 函数返回 int 但出现奇怪的行为

c - 为什么我的函数没有删除所有数字?

java - 在不启动接收 Activity 的情况下将数据传递给 Activity (Android)

c - 这是什么意思\?在 C 语法中转义?

java - 如何根据数组的内容顺序有效地修改数组的内容?

javascript - 映射添加/减少具有相同索引的两个数组对象

regex - Powershell以字符串模式显示的5位数字格式

c# - 如何更改txt文件中的值并覆盖它

Android自定义工具栏文本按钮