1

Linux OS(ubuntu 12.04)でC言語のルーティングプロトコルを開発しています。私の質問は、ルーティングテーブルを外部ファイルに保存する必要があるということです。これにより、プログラムが閉じられたり、コンピューターがシャットダウンされたりした場合に、プログラムは再起動時にファイルからルーティングテーブルをフェッチできるようになります。

そのための最も簡単な解決策は何でしょうか?少し説明していただければ幸いです。答えるのに役立つ場合は、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 に答える