배열에 문자가 있다고 가정합니다. char x [100]C의 char 배열. 유효한 입력의 실제 길이를 찾는 방법은 무엇입니까?
이제 사용자로부터 입력을 받아 char 배열에 저장하십시오. 사용자 입력이 100 자 미만입니다. 이제 유효한 값에 대한 연산을 수행하려는 경우 char 배열에 유효한 값의 수를 몇 개나 찾을 수 있습니까? C 함수 또는이 경우 100 미만의 유효한 값의 실제 길이를 찾는 방법이 있습니까?
배열에 문자가 있다고 가정합니다. char x [100]C의 char 배열. 유효한 입력의 실제 길이를 찾는 방법은 무엇입니까?
이제 사용자로부터 입력을 받아 char 배열에 저장하십시오. 사용자 입력이 100 자 미만입니다. 이제 유효한 값에 대한 연산을 수행하려는 경우 char 배열에 유효한 값의 수를 몇 개나 찾을 수 있습니까? C 함수 또는이 경우 100 미만의 유효한 값의 실제 길이를 찾는 방법이 있습니까?
예, 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() 정의된다.
입력 내용의 위치에 따라 다릅니다. 대부분 strlen
일 가능성이 높습니다.
null 문자로 끝나는 문자열을 입력 할 때마다. 배열에서 null 문자가 어디에 있는지 찾아야합니다.
그렇지 않으면 수동으로 수행 할 수 있습니다. strlen()가 문제를 해결합니다.
char ch;
int len;
동안 ((CH2 = getche()) = '13'!)
{
LEN을 ++; http://www.cplusplus.com/reference/clibrary/cstring :
}
또는 내가 당신을 믿지 %의
에 의해 문자열로 문자로 변환 한 후 strlen 함수를 사용 strlen''을 찾고/strlen/ –
strlen을 실행하기 전에 배열이 널 종료인지 확인하십시오. 그렇지 않으면 알 수없는 메모리 덩어리로 방황 할 수 있습니다. – devyndraen