gpt4 book ai didi

c++ - snprintf 是否可能返回以 '\0' 开头的字符数组?

转载 作者:太空宇宙 更新时间:2023-11-04 11:37:23 26 4
gpt4 key购买 nike

我有以下代码:

string getid()
{
pthread_t tid = pthread_self();
struct timeval tv;
gettimeofday(&tv, NULL);
uint64_t t = static_cast<uint64_t>(tv.tv_sec);
char buf[64];
snprintf(buf, 64, "%ld-%ld", static_cast<uint64_t>(tid), static_cast<uint64_t>(t));

return buf;
}

有时,返回的字符串有 0 个 size(),我认为一个可能的原因是 buf[0] 是 '\0',这意味着 pthread_self 返回 '\0' 开始的字符数组?

最佳答案

pthread_self 返回一个pthread_t,不一定是整数类型。所以你的 Actor 阵容可能甚至没有意义。

接下来,%ld 引用了一个 long int,但您传递的是 uint64_t 值。根据系统上 long int 的大小,这可能又没有多大意义。

但是,要解决您的问题:检查 snprintf 调用的返回值:它返回已成功写入的字符数。如果不是至少 3,则说明出了问题。

关于c++ - snprintf 是否可能返回以 '\0' 开头的字符数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6732322/

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