【发布时间】:2017-12-02 21:59:17
【问题描述】:
我正在尝试将变量的十六进制值拆分为字符串。为此,我使用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 的字符串。
有没有其他方法可以得到这个输出然后请告诉我。
【问题讨论】:
-
我不确定你为什么要“拆分”它,而你所要做的就是例如
printf("%04X", n) -
您需要为
t1指向的写入分配空间。 -
另外,我建议您将指针实际 point 某处。或者改用数组。请记住为字符串终止符分配一个额外的字符。
-
您正在写入未分配的 t1 和 t2 并指向某个随机地址,导致段错误。
-
@Someprogrammerdude 感谢您的帮助,您提供的解决方案对我有用。