strnlen_s 예제

strnlen_s 예제

문자열의 문자는 실행 환경에서 해석된 문자 집합인 실행 문자 집합에 속합니다. 이러한 문자는 C 표준에 의해 정의된 기본 문자 집합과 기본 문자 집합의 멤버가 아닌 0개 이상의 확장된 문자 집합으로 구성됩니다. 실행 문자 집합의 멤버 값은 정의된 구현이지만 예를 들어 7비트 미국 ASCII 문자 집합의 값일 수 있습니다. 컴파일하는 동안 인접 문자 시퀀스와 동일하게 접선된 문자열 리터럴 토큰으로 지정된 다중 바이트 문자 시퀀스가 단일 다중 바이트 문자 시퀀스로 연결됩니다. 토큰 에 인코딩 접두사가 있는 경우 결과 멀티바이트 문자 시퀀스는 동일한 접두사를 갖는 것으로 처리됩니다. 그렇지 않으면 문자 문자열 리터럴로 처리됩니다. 서로 다르게 접두사된 와이드 스트링 리터럴 토큰을 연결할 수 있는지 여부(그리고 만약 그렇다면 생성된 다중바이트 문자 시퀀스의 처리)가 구현정의됩니다. 예를 들어 인접한 문자열 리터럴 토큰의 다음 각 시퀀스는 종종 문자열 리터럴에 의해 초기화되고 문자열 리터럴의 문자 수와 일치하는 명시적 바운드로 선언됩니다. 예를 들어 다음 선언은 배열이 보유할 수 있는 것보다 하나 더 많은 문자("를 종기 계산)를 정의하는 문자열 리터럴을 사용하여 문자 배열을 초기화합니다. 따라서 트랩 표현이 없습니다. 결과적으로 모든 유형의 비비트 필드 개체는 서명되지 않은 char의 배열로 복사될 수 있으며(예: memcpy(를 통해) 해당 표현을 한 번에 1바이트씩 검사할 수 있습니다. strlen() 함수는 null 바이트(길이) 종료 앞에 있는 null-terminated 바이트 문자열의 문자 수를 계산합니다. 그러나 와이드 문자는 이 예제에서와 같이 특히 ASCII 문자 집합에서 가져온 경우 null 바이트를 포함할 수 있습니다.

결과적으로 strlen() 함수는 문자열의 첫 번째 null 바이트 앞에 있는 바이트 수를 반환합니다. 문자열 리터럴의 형식은 C의 char 배열이지만 C++의 const char 배열입니다. 따라서 문자열 리터럴은 C에서 수정할 수 있습니다. 그러나 프로그램이 이러한 배열을 수정하려고 하면 동작이 정의되지 않으므로 CERT C 보안 코딩 표준 [Seacord 2008], "STR30-C"에서 이러한 동작이 금지됩니다.

אין תגובות

מצטער, טופס התגובה סגור בשלב זה.