gpt4 book ai didi

C Sprintf 格式错误

转载 作者:行者123 更新时间:2023-11-30 19:37:59 24 4
gpt4 key购买 nike

我正在尝试格式化给定的字符串并打印它。但这不起作用。它给出错误有什么想法吗?

  char* query_buffer;

sprintf(query_buffer,"%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x;%u.%u.%u.%u;%d\n",
node_config->mac_address.addr[0], node_config->mac_address.addr[1], node_config->mac_address.addr[2], node_config->mac_address.addr[3],
node_config->mac_address.addr[4], node_config->mac_address.addr[5], node_config->mac_address.addr[6], node_config->mac_address.addr[7],
ip64_addr->u8[0], ip64_addr->u8[1], ip64_addr->u8[2], ip64_addr->u8[3],
node_config->coap_port);

printf("%s\n",query_buffer);

如果我尝试下面的 printf 它会起作用。我无法理解这两者之间有什么不同。

  printf("%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x;%u.%u.%u.%u;%d\n",
node_config->mac_address.addr[0], node_config->mac_address.addr[1], node_config->mac_address.addr[2], node_config->mac_address.addr[3],
node_config->mac_address.addr[4], node_config->mac_address.addr[5], node_config->mac_address.addr[6], node_config->mac_address.addr[7],
ip64_addr->u8[0], ip64_addr->u8[1], ip64_addr->u8[2], ip64_addr->u8[3],
node_config->coap_port);

最佳答案

char* query_buffer; 声明了一个指向 char 的指针,但它指向的内存可能未声明。因此,当您调用 sprintf 访问该内存时,可能会出现段错误。尝试像 char *query_buffer = (char*)malloc(256); 那样声明 query_buffer。这将创建一个指针在其指向的位置声明 256 个字节。

关于C Sprintf 格式错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38931076/

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