2013-07-29 3 views
2

C에서 strlen()을 사용하여 char 배열의 길이를 얻을 수 있지만 정수 배열의 길이를 얻는 방법을 알고 있습니다. 라이브러리에 함수가 있나요?어떻게 int 배열의 길이를 찾을 수 있습니까?

+0

이러한 배열의 길이를 알 수있는 유일한 방법은 크기를 측면 변수에 유지하는 것입니다. 문자의 문자열과 달리 _no_ value는 정수 배열의 끝을 표시 할 때 유효합니다 (예 : 배열이 양수 값만 포함하고 끝에 -1을 넣음). – Nbr44

+0

'strlen'은 길이를 찾기 위해 널 문자를 사용합니다. int array와 비슷한 것이 필요합니다. 그렇지 않으면 불가능합니다. – P0W

+4

당신은 틀린 가정하에 있습니다. 'strlen'은'char' 배열을 테스트하는 것이 아니라 C 문자열을 테스트하는 것입니다. char 배열 ** plus ** 종료를위한 특별한 규칙입니다. –

답변

4

일반적으로 배열에 미리 결정된 종결 센티널이 포함되어 있지 않으면 배열의 길이를 얻을 수 없습니다. 따라서 C 문자열은 사전 결정된 종결 소 센티넬, 즉 널 종결자가있는 배열의 표준 예입니다.

배열의 길이를 별도의 변수로 추적하거나 종결 센티널을 사용해야합니다.

후자의 예

배열 이렇게 선언 될 것이다 : -1이있는 것으로 간주

int array[] = { 1, 2, 42, -1 }; 

가 종료된다. 이 기법은 터미네이터로 사용할 값을 예약 할 수있는 경우에만 실행 가능합니다.

동적으로 할당 된 배열의 길이를 얻으려는 것으로 가정합니다. 질문 할 때 가장 가능성이 높은 시나리오이기 때문에이를 가정합니다. 결국 배열이 다음과 같이 선언 된 경우 int array[10]입니다. 얼마나 오랫동안인지는 분명합니다.

관련 문제