0

그래서 나는 그것이 존재하는지 확인하기 위해 환경 변수가 설정되어 있지 않은지 확인하는 방법은 무엇입니까?

char buffer[1000]; 
GetEnvironmentVariable("PATH",(char*)&buffer,sizeof(buffer)); 
std::cout << buffer << std::endl; 

을 시도하지만 난 그 비어 있는지 확인하는 방법을 표시되지 않는 이유는 무엇입니까? 그리고 그것은 정말 나쁜 출력을 = (couts

+3

제안 :

는 문서에서 살펴보고 당신은' – Marlon

+0

@Marlon을 buffer'에 그 캐스트 필요하지 않습니다 - 그 캐스트가 실제로 자신의 오류가 숨어있다. 그는 GetEnvironmentVariable에'buffer'를 넘겨 줄 때'& buffer'를 넘겨주고 있습니다. 그것이 그가 쓰레기 배출량을 얻는 이유입니다. – Tim

답변

3

MSDN이 약 GetEnvironmentVariable 말할 수있다 : 함수가 실패

경우, 반환 값이 0 지정된 환경 변수가 환경 블록에서 발견되지 않은 경우. 원하면 GetLastError 반환 ERROR_ENVVAR_NOT_FOUND

(출처 : http://msdn.microsoft.com/en-us/library/ms683188.aspx).

그래서 난 당신이 함수의 반환 값을 테스트해야합니다 같아요

char buffer[1000]; 
if(GetEnvironmentVariable("PATH", buffer, sizeof(buffer))) 
{ 
    // non-zero, go ahead! 
    std::cout << buffer << std::endl; 
} 
else 
{ 
    // zero, something went wrong 
} 
+0

하지만 ounput이 "0"인지 확인하는 방법은 무엇입니까? – Rella

+6

@Kabumbus : 저는 찌르려고하지 않습니다. 그러나 함수의 반환 값을 확인하는 방법을 모르는 경우에는 무엇을 하든지 중단하고 초보자를위한 C++ 책을 읽기 시작할 필요가 있습니다. – Praetorian

0

언제든지 getenv을 사용할 수 있습니다. 변수가 존재하지 않으면 null을 반환하고 변수가 공백이면 빈 문자열을 반환합니다.

관련 문제