다음 코드 세그먼트를 사용하여 시스템 시간을 가져 왔습니다. 그러나 세그멘테이션 오류가 발생합니다. 도와주세요.시간 함수가 C에서 작동하지 않습니다.
printf("Time : %s\n", System("time"));
return 0;
다음 코드 세그먼트를 사용하여 시스템 시간을 가져 왔습니다. 그러나 세그멘테이션 오류가 발생합니다. 도와주세요.시간 함수가 C에서 작동하지 않습니다.
printf("Time : %s\n", System("time"));
return 0;
대신 다음 코드를 사용하여
time_t t;
time(&t);
printf("%s", ctime(&t));
이가 문제를 해결하는 것입니다.
고마워, 그게 내 문제를 해결해 줬어. – binish
난 당신이 system()
보다는 System()
의미 가정합니다.
system()
은 명령이 터미널에 인쇄 한 내용을 포함하는 문자열을 반환합니다. 그것은 그렇게하지 않습니다. 사실 system()
은 자식 프로세스의 종료 코드를 반환합니다.
현재 시간을 얻을 수있는 가장 쉬운 방법은 time()
기능을 사용하는 것입니다 :
NAME
time - get time in seconds
SYNOPSIS
#include <time.h>
time_t time(time_t *t);
DESCRIPTION
time() returns the time since the Epoch (00:00:00 UTC, January 1,
1970), measured in seconds.
If t is non-NULL, the return value is also stored in the memory pointed
to by t.
는 system() function 정수를 반환 %s
당신이 문자열을 인쇄 할 것을 나타냅니다있다. 시스템 기능은 time
프로그램의 결과가 아니라 종료 값을 리턴합니다.
system() 함수는 문자열이 아닌 종료 상태 (int)를 반환합니다. system("time")
을 호출하면 시간을 표준 출력으로 인쇄합니다. 만약 당신이 원하는 경우에, 당신이 세그먼트 폴트를 얻을 수
system("time");
를 사용 printf와의 %s
에 대한 포인터로 NULL 포인터입니다 해석 INT 0 때문이다. Dereferencing NULL 포인터는 정의되지 않은 동작이며 세그먼트 화 오류는 정의되지 않은 동작에 대한 하나의 가능성입니다.
당신의 매뉴얼은'System()'(* 대문자 'S'??? 이것은 표준 C *가 아닙니다) 함수의 반환 유형입니까? – pmg
라이브러리 호출'system()'을 사용하는 경우 프로그램의 출력이 아닌 실행 된 호출의 반환 값을 포함하는 정수를 반환합니다. 현재 시스템 시간을 원한다면'time()','localtime()'및'strftime()'을 살펴보십시오. – dwalter
컴파일러가 printf 형식 지정자에 대한 경고를 제공 했습니까? 예를 들어, 경고 : '% s'형식은 'char *'유형을 필요로하지만 인수 2는 'int' "'유형을가집니다. 그렇다면 컴파일러 경고를 무시하지 마십시오. 그들은 당신에게 뭔가를 말하려고합니다. 그렇지 않다면, 경고를 켜거나 더 나은 컴파일러를 얻고 싶을 수도 있습니다 :-) –