gpt4 book ai didi

c - asctime/localtime 输出错误

转载 作者:行者123 更新时间:2023-11-30 17:54:07 25 4
gpt4 key购买 nike

char timestamp()
{
time_t ltime;
struct tm * loctime;
char thetime;
time(&ltime);
loctime=localtime(&ltime);
printf("%s", asctime(loctime));
// "Sat Mar 2 12:12:57 2013"
thetime=*asctime(loctime);
// why "83"?!
return thetime;
}

void WriteLog(char* Msg, ...)
{
FILE logfile;
logfile=*fopen(LOG_FILE, "r+");
fseek(&logfile, 0, SEEK_END);
fprintf(&logfile, "%hhd, %s", timestamp(), Msg);
fclose(&logfile);
}

我感觉这里存在一个非常基本的错误。当我打印时间时,它完全没问题,但是当我尝试将其分配给要在另一个函数中使用的变量时,我得到 83 而不是实际的日期和时间,当我从 asctime(loctime),我收到 -128 和来自编译器的警告:Incompromedpointer to integer conversion allocateing to 'char' from 'char *';使用 * 解除引用。






最佳答案





char 只是一个 ASCII 字符,而 char* 是指向通常用于保存字符数组(即字符串)的内存位置的指针。



该值为 83,对应于 ASCII 字符 S,它来自时间戳字符串的第一个字符 Sat Mar 2 12:12:57 2013



而是尝试此代码,它直接返回可用于写入日志文件的char*



char* timestamp()
{
time_t ltime;
struct tm * loctime;
char thetime;
time(&ltime);
loctime=localtime(&ltime);
printf("%s", asctime(loctime));
// "Sat Mar 2 12:12:57 2013"
return asctime(loctime);
}

void WriteLog(char* Msg, ...)
{
FILE logfile;
logfile=*fopen(LOG_FILE, "r+");
fseek(&logfile, 0, SEEK_END);
fprintf(&logfile, "%hhd, %s", timestamp(), Msg);
fclose(&logfile);
}

关于c - asctime/localtime 输出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15171616/

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