我在学习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;
};
Run Code Online (Sandbox Code Playgroud)
任务是更改代码以接受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;
};
Run Code Online (Sandbox Code Playgroud)
我将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);
Run Code Online (Sandbox Code Playgroud)
现在我可以运行我的程序,更换MAX_ROWS
及MAX_DATA
与conn->db->max_rows
&conn->db->max_data
。