1

我正在用 C 语言在 Linux 操作系统(ubuntu 12.04)上开发路由协议。我的问题是我需要将路由表保存在一个外部文件上,这样如果程序关闭或计算机关闭,程序在重新启动时应该能够从文件中获取路由表。

什么是最简单的解决方案?如果您能稍微解释一下,我将不胜感激。如果对你有帮助,我把表保存struct routing user_list[40]在下面:较小的索引在表中具有较高的优先级。

struct routing {
   int hop_distance;
   char senderID[16]; // 192.168.001.122
   char gateway[16];
};

struct routing user_list[40] = { [0] = {0, {0}, {0}, {0} } };

先感谢您。

4

2 回答 2

2

男人恐惧

size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);
...
RETURN VALUE
fread()  and  fwrite() return the number of items successfully read or written (i.e., not the number of charac‐
ters).  If an error occurs, or the end-of-file is reached, the return value is a short item count (or zero).

最简单的解决方案

int nb_written = fwrite(&user_list, sizeof(struct routing), 40, myfile);
int nb_read = fread(&user_list, sizeof(struct routing), 40, myfile);

如评论中所示:

  • 由于依赖于体系结构的 int 类型,生成的文件将不可移植。
  • 必须检查返回值以处理 io 错误
于 2012-11-10T21:33:28.723 回答
1

请参阅读取写入以保存此数据。将 IP 地址存储为二进制(即 4 个字节)。

于 2012-11-10T21:34:01.093 回答