mktime()在C中覆盖时间
我对c语言中的mktime()在C中覆盖时间,c,mktime,C,Mktime,我对c语言中的mktime有问题: time_t t_fim; time(&t_fim); struct tm* p_fim; struct tm* c_fim; p_fim = localtime(&t_fim); c_fim = localtime(&t_fim); ...... p_fim->tm_year = ano-1900; p_fim->tm_mon = mes-1; p_fim->tm_mday = dia; //here the
mktime
有问题:
time_t t_fim;
time(&t_fim);
struct tm* p_fim;
struct tm* c_fim;
p_fim = localtime(&t_fim);
c_fim = localtime(&t_fim);
......
p_fim->tm_year = ano-1900;
p_fim->tm_mon = mes-1;
p_fim->tm_mday = dia;
//here the p_fim date is good
c_fim->tm_mday -=47;
mktime(c_fim);
printf("Pascoa %d %d %d\n", p_fim->tm_mday, p_fim->tm_mon + 1, p_fim->tm_year + 1900);
printf("Carnaval %d %d %d\n", c_fim->tm_mday, c_fim->tm_mon+1, c_fim->tm_year + 1900);
//here the c_fim is good with -47 days but the `p_fim` is now equal with `c_fim`
mktime
正在更改p\u fim
的值,如何解决此问题?尝试删除指针
struct tm p_fim;
struct tm c_fim;
p_fim = *localtime(&t_fim);
c_fim = *localtime(&t_fim);
或者,如果您使用的是POSIX系统,请尝试改为您认为您的
p\u fim
和c\u fim
变量指向哪里?在您展示的代码中,它们从未初始化或以其他方式设置为指向有效内存。我现在编辑了代码。您应该阅读此文档,尤其是其中的部分:“返回值指向内部对象,其有效性或值可能会因任何后续对gmtime或localtime的调用而改变。”