#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
这是为啥?
