C - 将文件中的文本/句子读取到字符串数组中

标签 c arrays string file scanf

我是一名初级程序员,在大学学习。眼下。 我的作业:编写一个基于文本的冒险游戏(经过不到两个月的编程学习:/)。

老师说游戏使用的文本应该存储在文件中。 一开始,程序应该从该文件中读取“所有文本”,然后,程序应该使用字符串中的文本(我猜)。

我的第一个想法是我会将 1 个句子读入 1 个字符串,但这只是不想解决,因为句子之间当然有空格,但是当我尝试读入它时,当程序看到一个空格,它将单词存储在另一个字符串中,而不是同一个字符串中。

因此,例如: 我的 txt 文件中有 4 行: 第 1 行:你应该走哪条路? 第 2 行:前进 3号线:​​左 第 4 行:右

我认为当我将文本读入4个字符串时,LINE 1将在第一个字符串中,LINE 2将在第二个字符串中,依此类推。 但发生了什么? “Which”在第一个字符串中,“way”在第二个字符串中,等等。

抱歉,我的解释不好,但我希望你们能理解我的问题所在。 如何仅将第 1 行读入第一个字符串? 我认为程序不会将空格算作“好吧,我应该将此空格后面的单词放入一个新字符串”..

这是我的代码导致了这个“错误”:

char decisions[4][200];
FILE *fp;
fp=fopen("text.txt", "r");
fscanf(fp, "%s %s %s %s", &decisions[0], &decisions[1], &decisions[2], &decisions[3]);
fclose(fp);

printf("%s\n %s\n %s\n %s\n", decisions[0], decisions[1], decisions[2], decisions[3]);

decisions[0] 应该从我的 txt 文件的第一行读取问题,而其他 3 个应该有 3 个选择选项。这就是我想要发生的事情:/

最佳答案

要逐行读取,您可以使用fgets。如果您知道每个字符串的最大字节数为 200 并且有 4 行,请将其传递给 fgets 进入此循环:

int i;
for (i=0; i<3; i++)
  {
    fgets(decisions[i], 200, fp);
  }

fgets 将 n 个字节读入缓冲区,直到找到新行或 EOF。因此,请确保每行的字符数不超过 200 个。

关于C - 将文件中的文本/句子读取到字符串数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40250326/

相关文章:

c - Linux (CentOS) C 中的信号处理

java - i == (i = 2) 的结果是什么?

javascript - 有一个字符串数组 A 和一个字符串数组 B 。我想删除A中不在B中的元素

java - 如何将 "ellipsize"AlertDialog的标题放在中间?

c++ - IP 标志的 Don't Fragment Bit 在哪里使用?

c# - 从 native 调用 C# 来检索字符串

java - 如何让我的代码来查找 Java 数组中的数字是否重复?

c# - char[] c 和 char c[] 有什么区别?

Erlang 中的字符串定界

javascript - Node.js - 将整个字符串数组转换为字符串,其中字符串由 | 分隔