Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C Sprintf格式错误_C_String_Pointers_Printf - Fatal编程技术网

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]
是数组声明,而不是指针。