在两个 C 结构之间复制数据

标签 c struct synchronization copy

我在两台不同的机器上有一个 C 结构 - 服务器和客户端。例如:

struct account {
   int account_number;
   char *first_name;
   char *last_name;
   float balance;
};

我的问题是在机器之间复制数据的可能方法是什么?也许我可以尝试将数据转换为 XML 并复制它?或者我可以使用数组?

最佳答案

最简单、最轻量级的解决方案 - 如果您在两台机器之间以 FILE* 的形式打开连接 - 可能是在一台机器上使用 fprintf 进行传输结束,并在另一端使用 fscanf 进行解码。

协议(protocol).h:

typedef struct _packet packet_t;

struct _packet {
  int account_number;
  char *first_name;
  char *last_name;
  float balance;
};

static const char packet_fmt[]=" acct: %d fname: %s sname: %s balance: %f";

发件人:

  ...
  printf(packet_fmt, acct, "Greg", "Benison", bal);
  ...

监听者:

...
int n_read = fscanf(fin, packet_fmt, &acct, fname, sname, &balance);

if (n_read == 4)
  printf("Received balance update for %s %s: %f\n", fname, sname, balance);
...

这对于您的四字段结构来说可能就足够了,但如果您预计其结构会发生显着变化或增长,那么采用 XML、JSON 或其他更正式的编码可能是有意义的。

关于在两个 C 结构之间复制数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11067671/

相关文章:

c - 使用 LLDB 调试 C

c - 从函数返回结构。 C

json - 在所需的 JSON 参数中包装和编码 Go 结构

Java:同步实用程序

c# - 如何使用静态 List<T> 作为缓存对象?

c++ - 软件规划好用的软件?

c++ - 奇怪的 C/C++ 语法

process - 计算 Minix 中的进程数

c - 了解包含自身类型指针的结构

c++ - Intel Inspector 报告我的自旋锁实现中存在数据竞争