2011-04-25 6 views
0

휠을 재생성하지 못하게하려고합니다. 값 중 하나로 시간이있는 입력 파일을 구문 분석하고 있습니다. 입력 파일의 모든 값을 보유하는 데이터 구조가 필요하며 시간 필드에 대한 사용자 지정 구조를 만드는 대신 ctime에서 struct tm을 사용하려고합니다.time_t가 먼저 선언하지 않으면 struct tm을 사용하는 동안 프로그램이 중단됩니다.

나는 이상한 오류가 발생 했으므로 잘만하면 당신 중 하나가 나를 도울 수 있습니다. 여기에 (개념의 제 증명에 대한) 내 테스트 코드입니다 : 그것은 정보를 원하시면에게 길을 저장 그래서

#include <ctime> 
#include <cstdio> 

int main() 
{ 

int Oldhour = 16; 
int OldSecond = 25; 
int OldMinute = 20; 

time_t seconds; 

struct tm * timeinfo; 

timeinfo->tm_hour = Oldhour; 
timeinfo->tm_min = OldMinute; 
timeinfo->tm_sec = OldSecond; 


int hour, min, sec; 

hour = timeinfo->tm_hour; 
min = timeinfo->tm_min; 
sec = timeinfo->tm_sec; 

printf("%d:%d:%d", hour, min, sec); 

return 0; 
} 

이 잘 컴파일하고 내가 원하는 정확히 무엇을 인쇄합니다 "16시 20분 25초"나는 원한다. 그러나 "time_t seconds;"줄을 제거하면 즉시 충돌합니다.

+0

을 당신은 당신이 그것을 받아들이 클릭해야 문제가있어 해결에 대한 답변이 있다면. –

+0

근무일이 끝날 때 게시 했으므로 이제 답을 확인하는 중입니다. – Andrew

답변

6

스택이나 malloc으로 힙에 구조체를 할당해야합니다. 특히 구조체에 대한 저장소를 할당하지 않고 구조체에 대한 포인터를 선언하고 있습니다.

이 시도 :

#include <ctime> 
#include <cstdio> 

int main() 
{ 

int Oldhour = 16; 
int OldSecond = 25; 
int OldMinute = 20; 

time_t seconds; 

struct tm timeinfo; 

timeinfo.tm_hour = Oldhour; 
timeinfo.tm_min = OldMinute; 
timeinfo.tm_sec = OldSecond; 


int hour, min, sec; 

hour = timeinfo.tm_hour; 
min = timeinfo.tm_min; 
sec = timeinfo.tm_sec; 

printf("%d:%d:%d", hour, min, sec); 

return 0; 
} 
+0

나는 그것이 단순 할 것임을 알았다. 물론 "time_t seconds"가 먼저 선언 될 때 왜 작동하는지 설명하지 못합니다. – Andrew

관련 문제