gpt4 book ai didi

c++ - localtime() 和 gmtime() 似乎弄乱了我的输入流 C++/C

转载 作者:太空宇宙 更新时间:2023-11-04 04:03:20 27 4
gpt4 key购买 nike

我在从 unix 纪元时间转换为字符数组时遇到问题。我知道该怎么做并且转换正确进行但是在我调用 gmtime() 或 localtime() 之后,所有输入都会附加随机字符。我已经解决了这个问题,只有调用 localtime() 或 gmtime() 的行会导致这个问题(说真的......我把它们放进去,问题就出现了,我把它们注释掉,重新制作,问题就不再出现了)。这是调用函数的函数:

void ls(){

int clusterSize = bootRecord[0];
int root = bootRecord[2];

for (int i = 0; i < bootRecord[0] / 128 ; ++i){
fseek(fp, clusterSize * root + 128 * i, SEEK_SET);
if(directoryTable[i].name[0] != 0x00){

time_t rawtime = (time_t)directoryTable[i].creation;
struct tm * curDate;

curDate = localtime(&rawtime);

printf("%s %d %s", directoryTable[i].name, directoryTable[i].size,
asctime(gmtime(&rawtime)));

}
}
}

现在我有 asctime(gmtime(&rawtime)) 但我尝试将它们分成几个不同的语句但无济于事。有谁知道 localtime() 或 gmtime() 的有用替代方法?或者碰巧知道这个特定问题的解决方案?谢谢。

最佳答案

无论您遇到什么问题,都与您使用时间函数的方式无关。以下程序运行良好:

#include <stdio.h>
#include <time.h>

int main (void) {
time_t now = time(0);
printf ("Local time is %s", asctime (localtime (&now)));
printf (" UTC time is %s", asctime (gmtime (&now)));
return 0;
}

打印出来:

Local time is Thu Feb 16 14:15:51 2012
UTC time is Thu Feb 16 06:15:51 2012

正如预期的那样。

您需要更清楚地说明 all input gets random characters appended to 的含义。如果您的意思是您神秘地输入的行似乎添加了字符,那几乎可以肯定是一个不同的问题,函数调用恰好加剧了这种问题。

我会首先寻找(例如)可能溢出的缓冲区或不传输空终止符的代码逻辑。

关于c++ - localtime() 和 gmtime() 似乎弄乱了我的输入流 C++/C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9306264/

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