我在艰难地学习 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_data
和 max_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/