c++ - Char 数组指针返回不正确(当前年份 ctime)

标签 c++ c arrays datetime pointers

这个函数

char *uniqid()
{
    static char uniqid[13];

    time_t curTime = time(0);
    struct tm *time = gmtime(&curTime);

    //Year
    uniqid[0] = '1';
    uniqid[1] = '5';
    uniqid[2] = '\n';

    return uniqid;
}

当在 cout 中调用时返回“15”,通常应该返回“15”,但是当我这样做时

char *uniqid()
{
    static char uniqid[13];

    time_t curTime = time(0);
    struct tm *time = gmtime(&curTime);

    //Year
    uniqid[0] = ((time->tm_year + 1900) % 100) / 10;
    uniqid[1] = ((time->tm_year + 1900) % 100) % 10;
    uniqid[2] = '\0';

    return uniqid;
}

当在 cout 中调用时,它会返回奇怪的图标。

最佳答案

'1'1 是不同的值。

要从 1 获取 '1',只需添加 '0'

uniqid[0] = ((time->tm_year + 1900) % 100) / 10;
uniqid[0] += '0';
uniqid[1] = (((time->tm_year + 1900) % 100) % 10) + '0';

关于c++ - Char 数组指针返回不正确(当前年份 ctime),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32677951/

相关文章:

c++ - 从 XML 转换为 C++ 对象

用 execve 调用 ls

java - 无法理解数组边界

c++ - 为什么在同一声明区域内的同名声明被拒绝?

c++ - 如何使用 C++ 将 MXNET 自定义运算符构建到单独的库/包中?

c - C语言中获取错误的IP

c++ - 局部变量的安全

javascript - 包含对象数组的过滤对象

javascript - 将 ActionScript JPG 字节数组传递给 Javascript(最终传递给 PHP)

c++ - 在类头文件中声明一个字符串数组 - 编译器认为字符串是变量名?