我有一个数组(readingreg [4]),它用十六进制数字填充。我的目标是将数据类型转换为字符串。我看过一些建议,似乎sprintf是要走的路。sprintf没有给出预期值
这是我的尝试:
sprintf(server0, "0x%02X", readingreg[0]);
printf("This is element 0: %s\n", server0);
sprintf(server1, "0x%02X", readingreg[1]);
printf("This is element 1: %s\n", server1);
sprintf(server2, "0x%02X", readingreg[2]);
printf("This is element 2: %s\n", server2);
sprintf(server3, "0x%02X", readingreg[3]);
printf("This is element 3: %s\n", server3);
printf("This is element 0: %s\n", server0);
printf("This is element 1: %s\n", server1);
printf("This is element 2: %s\n", server2);
printf("This is element 3: %s\n", server3);
这里是我的输出:
This is element 0: 0x4A
This is element 1: 0xAA
This is element 2: 0xAA
This is element 3: 0xA0
This is element 0: 0
This is element 1: A0
This is element 2: xA0
This is element 3: 0xA0
在这一点上,我是在什么样的sprintf为我做了很困惑。我的预期输出是server0 - server4都保留其字符串值。任何想法为什么这是发生?
这里是程序的简化版本:
readingreg[0] = 4A;
readingreg[1] = AA;
readingreg[2] = AA;
readingreg[3] = A0;
char server0[1];
char server1[1];
char server2[1];
char server3[1];
完整的程序是超过1000行代码所以我提供应足以编译和运行。
server0-3如何初始化?看起来像指向堆栈分配单个字符而不是缓冲区...? – 2014-09-03 20:45:00
'serverx'变量声明是问题的关键。不要将它们排除在您发布的代码之外。事实上,发布一个完整的程序会如此困难,以至于我们所需要做的就是复制/粘贴到我们的代码编辑器中并运行它? – PaulMcKenzie 2014-09-03 20:47:05
请发布一个[SSCCE](http://sscce.org),可以按原样进行复制/粘贴和编译。 – 2014-09-03 20:54:05