[英]how to convert uint64_t value in const char string?
在一種情況下查看
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
。 ( PRIu64
在inttypes.h
。) YMMV。
使用snprintf
將數字轉換為字符串。 對於stdint.h
標頭中的整數類型,請使用inttypes.h
的格式宏。
#define __STDC_FORMAT_MACROS // non needed in C, only in C++
#include <inttypes.h>
#include <stdio.h>
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.