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() に代わる便利な方法を知っている人はいますか? または、この特定の問題の解決策をたまたま知っていますか? ありがとうございました。