我试图在字符串中拆分变量的十六进制值。为此我使用sprintf
。但是我收到了一个错误:Segmentation fault (core dumped)
以下是我尝试的代码:
#include <stdio.h>
#include <string.h>
int main() {
char* t1;
char* t2;
int n = 0x23A;
sprintf(t1, "%X", n & 0xFF);
printf("t1 is : %s\n",t1);
sprintf(t2, "%X", (n >> 8) & 0xFF);
printf("t2 is : %s\n",t2);
return 0 ;
}
例如,我想在0x23A
和0x02
中拆分0x3A
我使用两个字符串,因为我的想法最终将它们连接起来,形成一个023A
的字符串。
有没有其他方法可以获得此输出,请告诉我。
答案 0 :(得分:2)
您正在使用未初始化的指针,它会提供未定义的行为。
只需使用字符数组,这样就可以为字符串留出一些空间:
char t1[16];
sprintf(t1, "%X", n & ff);
printf("t1 is '%s'\n", t1);
这应该打印3A
。