#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.