gpt4 book ai didi

c - 动态调整大小的结构 - 学习 C 的艰难之路 Ex17

转载 作者:太空狗 更新时间:2023-10-29 14:56:16 24 4
gpt4 key购买 nike

我在艰难地学习 C 中的练习中遇到问题。本练习提供了一个简单的数据库程序,它具有固定的大小和行数。您可以在下面看到构成数据库的结构。

#define MAX_DATA 512
#define MAX_ROWS 100

struct Address {
int id;
int set;
char name[MAX_DATA];
char email[MAX_DATA];
};

struct Database {
struct Address rows[MAX_ROWS];
};

struct Connection {
FILE *file;
struct Database *db;
};

任务是更改代码以接受 MAX_DATA 和 MAX_ROWS 的参数,将它们存储在数据库结构中,并将其写入文件,从而创建一个可以任意大小的数据库。

我了解如何接受来自用户的 MAX_DATA 和 MAX_ROWS 作为命令行参数 - 在文件下方定义的函数中。获得这些值后,我不确定如何将它们存储在数据库结构中并写入文件。

感谢任何能够提供帮助的人。您可以在此处找到其余代码:http://c.learncodethehardway.org/book/ex17.html

最佳答案

好吧,我终于让这个程序运行起来了,我总结如下。我希望这可能对同样卡在 ex17 上的人有所帮助。

首先,我删除了 MAX_DATA 和 MAX_ROWS 常量并更改了结构,如下所示:

struct Address {
int id;
int set;
char *name;
char *email;
};

struct Database {
int max_data;
int max_rows;
struct Address **rows;
};

struct Connection {
FILE *file;
struct Database *db;
};

我将 max_datamax_rows 分配给结构中的新变量,并将它们写入文件。

conn->db->max_data = max_data;
conn->db->max_rows = max_rows;

int rc = fwrite(&conn->db->max_data, sizeof(int), 1, conn->file);
rc = fwrite(&conn->db->max_rows, sizeof(int), 1, conn->file);

现在我可以运行我的程序并将 MAX_ROWS & MAX_DATA 替换为 conn->db->max_rows & conn-> db->max_data.

关于c - 动态调整大小的结构 - 学习 C 的艰难之路 Ex17,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21269700/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com