2014-01-05 3 views
0

안녕하세요 저는 리눅스와 C 프로그래밍에 익숙하지 않으므로 어리석은 질문 일 수 있지만 답변을 찾을 수 없습니다.시간 기능을 사용할 때 분할 오류 (코어 덤프) 오류가 발생했습니다.

나는 가사를 쓰고 있는데, 그들은 프로그램의 끝에 time() 함수를 사용하여 실행 시간을 인쇄하기를 원합니다. 프로그램에서 함수를 사용할 때 메시지가 segmentation fault (core dumped)이고 제거하면 프로그램이 작동합니다. agine. 그런 다음 나는 아래의 코드에서 테스트 파일 생성 :

#include <stdio.h> 

int main() 
{ 
    time(); 
    return 0; 
} 

을 그리고 난 같은 오류 메시지를 받았습니다.

#include <stdio.h> 
#include <time.h> 

int main() 
{ 
    time_t t; 

    time(&t); 
    return 0; 
} 

#include <stdio.h> 

int main() 
{ 
    time(NULL); 
    return 0; 
} 

과 그리고 같은 오류가 발생했습니다 :

도 시도했다.

그래서 내가 뭘 잘못하고있는 걸까요?

감사

첫 번째 두 예에서
+0

나를 위해 작동합니다. 어떻게 컴파일하고 있니? 올바른 프로그램을 실행하고 있습니까? –

+0

인수가 누락되어 첫 번째 프로그램이 컴파일되지 않습니다. –

+0

위의 모든 프로그램이 나를 위해 컴파일하고 실행시 문제를 일으킨다 – AlaaL

답변

3

, 당신은 time.h.을 포함하는 것을 잊지 이것이 그 예에서 세그먼테이션 결함의 원인입니다. gcc를 사용한다면, -Wall (모든 경고를 켜짐)으로 컴파일 해보십시오. 암시 적으로 "time"함수의 암시 적 선언을 나타내는 경고를 받아야합니다. 즉, time.h를 포함하는 것을 잊었습니다.

그러나 마지막 예제는 나에게 잘 돌아갑니다. 그러나 세그멘테이션 오류가 계속 발생하면 gdb로 디버깅을 시도하십시오.

1
#include <stdio.h> 
#include <stdlib.h> 
#include <time.h> 

int main(void) 
{ 
    time_t now; 
    time(&now); 

    printf("%s", ctime(&now)); 

    return EXIT_SUCCESS; 
}