字符数组指针返回不正确(当前年份ctime)

时间:2015-09-20 09:43:59

标签: 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”,但是当我这样做时

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 个答案:

答案 0 :(得分:0)

tm_year属于int类型。您将int类型分配给char。这导致了奇怪的图标。您需要通过向其添加48(对于零的ASCII代码)将其转换为char。然后,整数将正确转换为char。