2013-05-06 10 views
0

날짜를 설정하는 구조체를 생성해야합니다. 나는 뭔가를 봤어 그리고 난 time.h 도서관에서 tm structure 발견,하지만 몇 가지 문제가 있어요; 내가 여기 예를 들어, 로그 파일에 일부 날짜를 인쇄해야합니다 내가 틀렸다 곳(time.h의) tm 구조는 어떻게 작동합니까?

typedef struct tm* tm_; 

...

void NEW_Job() 
{ 
    time_t t; 
    tm_ secs; 
    t=time(NULL); 
    secs=localtime(&t); 
    add_QUEUEnode(generate_job()); 
    fprintf(f, "\n%d:%d.%d : New job created.", secs->tm_hour, secs->tm_min, secs->tm_sec); 
} 

난 정말 모르겠어요. 도움말 :

+0

내 답변 중 하나는 해당 구조체의 사용을 다룹니다. http://stackoverflow.com/questions/16164442/convert-seconds-from-jan-1st-1970-to-date-using-c-language/16166125#16166125 – Dariusz

+0

코드가 괜찮습니다. 뭐가 잘못 됐니? –

+1

'typedef struct tm * tm_;'- typedef 뒤에 포인터 타입을 숨기는 것은 일반적으로 나쁜 생각입니다. typedef를 버리고'struct tm * secs; '를 선언하십시오. –

답변

0

에 미리

덕분에 정확한 오류가 아니었지만, 바로 여기에 코드의 또 다른 라인에 :

void PCunload(int b) 
{ 
    time_t t; 
    tm_ secs; 
    int hh, mm, ss; 
    hh=(time(NULL)-n[b].start_time)/3600; 
    mm=((time(NULL)-n[b].start_time)%3600)/60; 
    ss=((time(NULL)-n[b].start_time)%3600)%60; 
    t=time(NULL); 
    secs=localtime(&t); 
    n[b].job.priority=-1; 
    -->>fprintf(f, "\n%d:%d.%d : PC number %d unloaded; elapsed time: %d:%d.%d", secs->tm_hour, secs->tm_min, secs->tm_sec, hh, mm, ss); 
} 

나는 내부의 변환을 시도 printf 함수,하지만 뭔가 잘못 됐어 ... 사과!

+2

''PC 번호 % d "와 일치하는 인수가 누락 된 것 같습니다 ... – twalberg

+0

힌트를 보내 주셔서 감사합니다 :) –

+1

Do not do 'time (NULL)'을 여러 번 호출하십시오. 한 번만 호출하고't'에 값을 저장 한 다음't'를 사용하십시오. 비효율과는 별도로'time()'을 호출하는 사이에 시계가 진행될 위험이 있습니다. –

0

strftime()을 사용하면 원하는 날짜 형식으로 날짜와 시간을 인쇄 할 수 있습니다. 남자 strftime 좀 봐주세요.