将数据设置为nodePtr而不覆盖

时间:2015-03-09 04:47:01

标签: c struct binary nodes

好的,所以我想知道如何设置一个数据结构,其中包含其他类型的数据,例如结构中的道路或城市,但它没有结构数据类型的数组。

   Struct data
    {
     Char city[MAX_LENGTH];
     Char road[MAX_LENGTH];
     }

主要:           数据数据; //只是不想改名字 我知道如何初始化节点插入节点等...但是当谈到添加更多信息我不明白,...  当我读取二进制文件时。它通过所述结构读取,我想在不覆盖它的情况下向二进制文件添加更多内容。我不知道如何通过使用节点添加它。有什么想法吗?

基本描述: 我需要补充一下。城市和道路没有覆盖二进制文件中的内容。

1 个答案:

答案 0 :(得分:0)

您的大小写似乎有问题,这实际上在C:

中很重要
#define MAX_LENGTH 50

struct data
{
  char city[MAX_LENGTH];
  char road[MAX_LENGTH];
};

int main()
{
  struct data data;

  return 0;
}

您可以使用以下任意一种方法打开二进制文件,而无需覆盖它:

FILE *fp  = fopen(filename, "r+b");
FILE *fp2 = fopen(filename, "ab");  // "a+b" will also work

对于第一个版本,您的文件指针将位于文件的最开头,因此您可能需要寻找想要写入的位置:

fseek(fp, 0, SEEK_END);

对于第二个版本,您的文件指针将位于文件的最末端,任何写入都将附加到文件的末尾。

PS - 上述模式中的“b”表示文件是二进制文件,但通常对许多系统没有影响(即 - 安静地忽略)。