1
처음에는 스택 오버플로에서 유사한 게시물을 모두 읽었 음을 강조하고 싶습니다. 그리고 아무것도 도움이되지 못했습니다.Difftime은 항상 0을 반환합니다
#include <stdio.h>
#include <stdlib.h>
#define _USE_32BIT_TIME_T 1
#include <time.h>
int main(void)
{
struct tm beg;
struct tm aft;
beg.tm_hour=0; beg.tm_min=0; beg.tm_sec=0;
aft.tm_hour=11; aft.tm_min=19; aft.tm_sec=19;
long long c;
c=difftime(mktime(&aft),mktime(&beg));
printf("%lld",c);
return 0;
}
그것은 모든 timr 0에서 다른 아무것도 인쇄하지,하지만 난 (지금 &) 지금 시간이 시간에서는 mktime (후미 &)를 변경하려고 할 때 나는 제로가 아닌 결과를 얻었다. 이 코드에서 무엇을 수정해야합니까?
다음을 시도하십시오. struct tm beg = {0}; struct tm aft = {0};'. 아마도'mktime'은 다른 필드의 초기화되지 않은 쓰레기 값 때문에 실패합니다. –
당신은'time_t t1 = mktime (&aft); if (t1 == -1) {printf ("mktime failed! \ n"); exit (EXIT_FAILURE);}'등을 수행하여이를 확인할 수 있습니다. –
정확하게. 'beg'와'aft'의 다른 필드는 값을 할당하지 않았기 때문에 쓰레기입니다 –