C Sprintf格式错误
我正在尝试格式化给定的字符串并打印它。但是它不起作用。它给了错误任何想法C Sprintf格式错误,c,string,pointers,printf,C,String,Pointers,Printf,我正在尝试格式化给定的字符串并打印它。但是它不起作用。它给了错误任何想法 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
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\u缓冲区代码>声明指向字符的指针,但它所指向的内存可能不会被声明。因此,当调用sprintf
访问该内存时,可能会出现分段错误。尝试声明query\u buffer
类似char*query\u buffer=(char*)malloc(256)代码>。这将创建一个指针并在其指向的位置声明256个字节。最后一个%u;%d
看起来可疑。你是说%u:%d
?您需要发布您的数据和MCVE,以便任何人给出明确的答案。请参阅:.char query\u buffer[256]
是数组声明,而不是指针。