#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/* unsigned long to string */
char * ultostr(unsigned long value, char * ptr, int base);
int main(void)
{
char var[] = "0A84010000000301";
unsigned long value = strtoul(var, NULL, 16);
printf("value is %lu\n\n", value);
char * str;
ultostr(value, str, 16);
printf("Received '%s'\n\n", str);
return 0;
}
/* unsigned long to string */
char* ultostr(unsigned long value, char* ptr, int base)
{
unsigned long t = 0, res = 0;
unsigned long tmp = value;
int count = 0;
if (NULL == ptr)
{
return NULL;
}
if (tmp == 0)
{
count++;
}
while (tmp > 0)
{
tmp = tmp / base;
count++;
}
ptr += count;
*ptr = '\0';
do
{
res = value - base * (t = value / base);
if (res < 10)
{
*--ptr = '0' + res;
}
else if ((res >= 10) && (res < 16))
{
*--ptr = 'A' - 10 + res;
}
} while ((value = t) != 0);
return(ptr);
}
VS2019 提示使用了未初始化的局部变量 str,但是 gcc 编译就没出问题,gcc 是 8.3.0
这是为啥?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.