시간 구하기..

김학수의 이미지

현재 날짜보다 X일 늦은 시간을 구하고 있습니다.
형식은 YYYYMMDD 이구요..

소스는....

main()
{
    int dd = 5;
    unsigned long prvtm;
    char tmformat[9];
    struct tm *t;
    char date_val[10];

    time(&prvtm);
    prvtm -= (86400 * dd);
    t = localtime(&prvtm);

    ascftime(tmformat, "%Y%m%d", t);

    sprintf(date_val, tmformat);

    printf("TIME : [%s] \n", date_val);
}

입니다..

컴파일을 시키니...

time(&prvtm); 이부분과
t = localtime(&prvtm); 이쪽에서 아래와 같은 에러가 나옵니다..
물론 컴파일은 되죠.. ㅡㅡ;;

warning: argument #1 is incompatible with prototype:
prototype: pointer to long : "/usr/include/iso/time_iso.h", line 91
argument : pointer to unsigned long

문제가 무엇인가요?제게 가르침을.....
그리고 위의 에러가 코어덤프를 생성시킬수 있는 문제인지.. ㅡㅡ;;

urmajest의 이미지

unsigned long prvtm;

time(&prvtm);

이렇게 하면 prvtm에는 garbage data가 있을테니 문제가 되겠죠?

그냥 시간 구할려면 time_t now = time(NULL);

이런식으로 하면 now에 초단위 시간이 들어가구요(1970년 1월 1일 0시 던가요? 이때 부터 몇초 지났는지)

localtime이나 ctime등으로 원하는 데이터 형으로 고치면 되겠네요

김학수의 이미지

내용이 없어요.^^:;

new5244의 이미지

unsigned long prvtm; 
char tmformat[9]; 
struct tm *t; 
char date_val[10]; 

time(&prvtm); 

time() 함수에 대한 프로토타입과 맞지 않아서 발생한 에러입니다.

헤더에는
time_t time(time_t *t)

이렇게 선언되 있을것입니다.

헤더에 정의된 데로 prvtm 을
time_t prvtm;
으로 정의하면 됩니다.

from saibi