Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mktime()在C中覆盖时间_C_Mktime - Fatal编程技术网

mktime()在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

我对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 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的调用而改变。”