2011-06-15 5 views
1

배열에 문자가 있다고 가정합니다. char x [100]C의 char 배열. 유효한 입력의 실제 길이를 찾는 방법은 무엇입니까?

이제 사용자로부터 입력을 받아 char 배열에 저장하십시오. 사용자 입력이 100 자 미만입니다. 이제 유효한 값에 대한 연산을 수행하려는 경우 char 배열에 유효한 값의 수를 몇 개나 찾을 수 있습니까? C 함수 또는이 경우 100 미만의 유효한 값의 실제 길이를 찾는 방법이 있습니까?

+0

에 의해 문자열로 문자로 변환 한 후 strlen 함수를 사용 strlen''을 찾고/strlen/ –

+0

strlen을 실행하기 전에 배열이 널 종료인지 확인하십시오. 그렇지 않으면 알 수없는 메모리 덩어리로 방황 할 수 있습니다. – devyndraen

답변

10

예, C에는 char 배열의 문자 수를 제공하는 strlen() (string.h의) 함수가 있습니다. 어떻게 알았지? 정의에 따라 모든 C "문자열"은 null 문자로 끝나야합니다. 그렇지 않으면 문자열의 길이 또는 다른 단어와 함께 배열의 메모리 위치가 실제로 "유용"한 값과 일부 덤프 값을 알 수있는 방법이 없습니다. 이것을 알고있는 경우 sizeof(your_string)은 배열의 크기 (바이트 단위)를 반환하고 문자열의 길이는 반환하지 않습니다.

"문자열"을 만들거나 입력을 읽고 char 배열에 저장하는 대부분의 C 라이브러리 문자열 함수는 "문자열"을 끝내기 위해 자동으로 끝에 null 문자를 첨부합니다. 일부는 그렇지 않습니다 (예 : strncpy()). 설명을주의 깊게 읽으십시오.

또한 제공된 버퍼는 지정된 입력 길이보다 1 문자 이상 길어야합니다. 따라서, 실제로는 길이가 101 인 문자 배열을 100 문자로 읽어야합니다 (1 바이트의 차이는 null 문자 용입니다).

시피
size_t strlen(const char * str) 
{ 
    const char *s; 
    for (s = str; *s; ++s); 
    return(s - str); 
} 

는 문자열의 끝이 어레이의 제 null character 검색함으로써 발견된다

사용 예 :로

#include <stdio.h> 
#include <string.h> 

int main(void) 
{ 
    char *string = "Hello World"; 
    printf("%lu\n", (unsigned long)strlen(string)); 
    return 0; 
} 

strlen() 정의된다.

1

입력 내용의 위치에 따라 다릅니다. 대부분 strlen 일 가능성이 높습니다.

0

null 문자로 끝나는 문자열을 입력 할 때마다. 배열에서 null 문자가 어디에 있는지 찾아야합니다.

그렇지 않으면 수동으로 수행 할 수 있습니다. strlen()가 문제를 해결합니다.

-1

char ch;

int len;

동안 ((CH2 = getche()) = '13'!)

{

LEN을 ++; http://www.cplusplus.com/reference/clibrary/cstring :

}

또는 내가 당신을 믿지 %의

관련 문제