我在从 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() 的有用替代方法?或者碰巧知道这个特定问题的解决方案?谢谢你。