如何在const char字符串中转换uint64_t值?

在一种情况下看

uint64_t trackuid = 2906622092;

现在我想在一个函数中传递这个值,其中函数参数是const char*

 func(const char *uid) { printf("uid is %s",uid); } 

这应该打印

 uid is 2906622092 

我怎样才能做到这一点?

 // length of 2**64 - 1, +1 for nul. char buff[21]; // copy to buffer sprintf(buff, "%" PRIu64, trackuid); // call function func(buff); 

这需要C99,但是,我的内存说MS编译器没有PRIu64 。 ( PRIu64inttypes.h 。)YMMV。

使用snprintf将数字转换为字符串。 对于stdint.h头文件中的整数类型,请使用inttypes.h的格式宏。

 #define __STDC_FORMAT_MACROS // non needed in C, only in C++ #include  #include  void func(const char *uid) { printf("uid is %s\n",uid); } int main() { uint64_t trackuid = 2906622092; char buf[256]; snprintf(buf, sizeof buf, "%"PRIu64, trackuid); func(buf); return 0; } 
 char buf[40]; memset (buf, 0, sizeof(buf)); snprintf (buf, sizeof(buf)-1, "%llu", (unsigned long long) trackuid); func(buf); 

应该在sizeof(unsigned long long) == sizeof(uint64_t)

编辑

但更好的答案是Maxim Yegorushkin使用"%"PRIu64