c - 如何从文件中正确导入此结构?

标签 c

我目前正在尝试用 C 语言编写一个程序来解决背包问题。作为本次作业的一部分,我们被要求打开一个文本文件,其内容如下,读取对象、重量、值和文件中每个对象的成本。我只是不知道如何导入这些信息并按照结构的正确顺序存储它。 以下是文本文件呈现格式的示例:objects.txt:

Blockquote

值(value)重量成本

7 1 4

6 5 10

6 11 15

5 4 8

4 2 20

3 6 8

2 4 9

2 10 3

1 6 7

最佳答案

是的,今天是周日,您的作业可能明天就要到期...我们不做作业,但我们可以提供一些指导。

要从文本文件中读取数据,请使用FILE *fp=fopen(...打开它。 。打开文件(并检查文件是否已成功打开)后,您可以通过两种方式读取行:

  • 调用 fscanf(fp, "%d %d %d ",...并检查您想要的参数数量已被读取(如果没有,您可能位于文件末尾),或者

  • 调用 fgets将一行读入缓冲区,然后处理缓冲区,您可以使用 sscanf很像fscanf .

注意:您可以循环执行此操作,直到 fscanffgets无法再阅读任何内容。您循环while (!feof(fp))因为feof报告读取失败后没有更多内容可读取。

您将数据读入结构的成员中。我假设您有一个结构数组,并且该数组足够大以容纳所有数据(动态分配将在您的类(class)稍后进行)。

最后用 fclose 关闭文件.

关于c - 如何从文件中正确导入此结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47618160/

相关文章:

c - FTP服务器PORT命令解析问题

c++ - 为什么,如果一个 char 被初始化为 1,然后左移 7 次并使用 %d 打印值,它会显示 -128 吗?

c - 段错误,大数组

使用当前 gcc 编译 som_pak (97)

c - 在 Linux 上使用 fgets() 读取带有 DOS 行结尾的文件

c - 如何使用 VBA 在 Excel 16 for Mac 中打印 C BSTR?

c - 了解 printf 的硬件

c++ - C99 风格的 VLA 有哪些技术缺点?

c - 在c中使用gtk3加载和写入二进制文件

C : printf() not thread safe with flockfile()