time.h:打印时屏幕上还有一个'%'

time.h:there is another '%' on the screen when print time

这是我试图理解的程序。

源代码

typedef float Time;

Time getCurrentTime() {
    time_t rawtime;
    struct tm * timeinfo;
    Time currentTime;
    time ( &rawtime );                            //get system time
    timeinfo = localtime ( &rawtime );//convert to local time 
    // tm_hour, tm_min
    currentTime = (float)timeinfo->tm_hour + timeinfo->tm_min * 0.01;
    printf("InnerTime:%7.2f\n", currentTime);
    return currentTime;
}

int main(void) {
    Time tm = getCurrentTime();
    printf("OuterTime:%7.2f", tm);
    return 0;
}

为什么OuterTime的最后多了一个%? 但是InnerTime!

最后没有%

这很可能是您的 shell 提示。添加一个 \n 以确保。

在外部时间打印中,您错过了在格式字符串中包含 newline,因此在程序打印最后一个输出并退出后,提示会在 打印后立即返回输出。

尝试

printf("OuterTime:%7.2f\n", tm);

强制提示出现在下一行。