gpt4 book ai didi

c - 具有动态字符的结构**,在添加第 5 个条目后将第一个字符 * 显示为空白

转载 作者:太空宇宙 更新时间:2023-11-04 08:07:25 24 4
gpt4 key购买 nike

我有一个动态字符、短裤和整数数组的结构。当我更新大小时,一切都达到 4 大小。当我添加一个条目时,出于某种原因,动态 char 数组的第一个条目最终显示为空白而不是 chars 我在期待。

但是,如果我实例化一个包含 5 个以上条目的结构,我没有问题。

这是怎么回事?以下是我的代码以及记录到我的终端的内容

typedef struct network {
int count;
char **ips;
short *ports;
int *heartbeat;
int *local_time;
} network;

network *create_network(char *ip, short port) {
network *n = malloc(sizeof(network));
n->count = 1;
n->ips = malloc(sizeof(char *));
n->ports = malloc(sizeof(short));
n->heartbeat = malloc(sizeof(int));
n->local_time = malloc(sizeof(int));

n->ips[0] = malloc(INET_ADDRSTRLEN);
memset(n->ips[0], '\0', INET_ADDRSTRLEN);
strcpy(n->ips[0], ip);
n->ports[0] = port;
n->heartbeat[0] = 0;
n->local_time[0] = 0;
return n;
}

void update_network(network *current, network *new, int local_time) {

current->count++;
current->ips = realloc(current->ips, sizeof(char *) * current->count);
current->ips[current->count - 1] = malloc(INET_ADDRSTRLEN);
strcpy(current->ips[current->count - 1], new->ips[0]);

current->ports = realloc(current->ports, sizeof(short) * current->count);
current->ports[current->count - 1] = new->ports[0];

current->heartbeat =
realloc(current->heartbeat, sizeof(int) * current->count);
current->heartbeat[current->count - 1] = new->heartbeat[0];

printf("after heartbeat: %s:%i\n", current->ips[0], current->ports[0]);

current->local_time[current->count - 1] = local_time;
printf("after localtime: %s:%i\n", current->ips[0], current->ports[0]);
}

int main(int argv, char **argc) {
char *ip = malloc(INET_ADDRSTRLEN);
ip = "0.0.0.0";

network *n1 = create_network(ip, 80);
network *n2 = create_network(ip, 81);
network *n3 = create_network(ip, 82);
network *n4 = create_network(ip, 83);
network *n5 = create_network(ip, 84);

update_network(n1, n2, 10);
update_network(n1, n3, 11);
update_network(n1, n4, 11);
update_network(n1, n5, 11);
}

日志(注意到最后一个日志中出现的随机空行吗?)

after heartbeat: 0.0.0.0:80
after localtime: 0.0.0.0:80
after heartbeat: 0.0.0.0:80
after localtime: 0.0.0.0:80
after heartbeat: 0.0.0.0:80
after localtime: 0.0.0.0:80
after heartbeat: 0.0.0.0:80
after localtime:
:80

最佳答案

在分配 current->local_time[current->count - 1] = local_time; .

关于c - 具有动态字符的结构**,在添加第 5 个条目后将第一个字符 * 显示为空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41816137/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com