gpt4 book ai didi

c - 将 C 中的 long 转换为 char* 的最简单方法是什么?

转载 作者:太空宇宙 更新时间:2023-11-04 00:22:58 25 4
gpt4 key购买 nike

在 C 中执行此操作的简洁方法是什么?

wchar_t* ltostr(long value) {
int size = string_size_of_long(value);
wchar_t *wchar_copy = malloc(value * sizeof(wchar_t));
swprintf(wchar_copy, size, L"%li", self);
return wchar_copy;
}

到目前为止,我提出的解决方案都相当难看,尤其是 allocate_properly_size_whar_t 使用双 float 基础数学。

最佳答案

long 在任何平台上都不会超过 64 位数字(实际上少于 64 位,但我现在懒得弄清楚实际的最小值是多少)。所以只需打印到固定大小的缓冲区,然后使用 wcsdup 而不是尝试提前计算长度。

wchar_t* ltostr(long value) {
wchar_t buffer[ 64 ] = { 0 };
swprintf(buffer, sizeof(buffer), L"%li", value);
return wcsdup(buffer);
}

如果你想要一个char*,翻译上面的内容很简单:

char* ltostr(long value) {
char buffer[ 64 ] = { 0 };
snprintf(buffer, sizeof(buffer), "%li", value);
return strdup(buffer);
}

这将比调用两次 snprintf 更快且更不容易出错,代价是占用少量堆栈空间。

关于c - 将 C 中的 long 转换为 char* 的最简单方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2999036/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com