따로 문자열의 길이를 보관하는 변수를 두시든지 아니면 std::string을 사용하면 그런 문제는 자동으로 해결됩니다. 물론 c_str()을 사용하면 널종료 문자열 출력을 하는 기존 루틴은 똑같이 반응하지만요. 널문자가 포함된 문자열을 취급하시려면 따로 길이가 필요합니다. 널문자를 종료로 인식하는 것은 따로 길이를 보관하지 않아도 되기 때문이지만 버퍼 넘침이라든가 하는 문제도 있고... 길이가 같이 보관되는 다른 자료 구조를 찾으시는 것이 맞다고 봅니다.
아무래도 strlen()은 스티링의 길이를 알아내는 함수인데...스트
아무래도 strlen()은 스티링의 길이를 알아내는 함수인데...
스트링이 아닌 값의 길이를 알아 낸다는건 힘들거 같고...
이건 따로 만드셔야 할것 같네요...
<어떠한 역경에도 굴하지 않는 '하양 지훈'>
#include <com.h> <C2H5OH.h> <woman.h>
do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);
참고로 문자열에서 \0은 문자열의 끝을 가리키기 위한 목적으로 쓰입니다.
참고로 문자열에서 \0은 문자열의 끝을 가리키기 위한 목적으로 쓰입니다. \0이 여러개 있다면 컴퓨터가 어떤 \0이 문자열 중간에 있고 어떤 \0이 문자열 끝인지 자동으로 인식할 수 있을 것 같지는 않군요.
특수한 문자 구성을 찾든가 배열 크기를 따지든지 하면서 문자열을 끝까지 검사하는 방법 말고는 없을 것 같습니다.
질문의 뜻을 명확히 하지 않으면 답을 얻기 어렵겠군요.C언어에서는
질문의 뜻을 명확히 하지 않으면 답을 얻기 어렵겠군요.
C언어에서는 string의 끝을 나타내는 표시로 NULL을 사용합니다. 따라서 string의 시작부터 NULL이 나타나기 바로 전까지의 글자 수를 return하는 함수인 strlen의 기능에 문제가 없습니다.
질문하신 분은 C언어가 아닌 다른 무엇인가를 하려고 하시는 건 아닌지?
세벌 https://sebuls.blogspot.kr/
따로 문자열의 길이를 보관하는 변수를 두시든지 아니면 std::strin
따로 문자열의 길이를 보관하는 변수를 두시든지 아니면 std::string을 사용하면 그런 문제는 자동으로 해결됩니다. 물론 c_str()을 사용하면 널종료 문자열 출력을 하는 기존 루틴은 똑같이 반응하지만요. 널문자가 포함된 문자열을 취급하시려면 따로 길이가 필요합니다. 널문자를 종료로 인식하는 것은 따로 길이를 보관하지 않아도 되기 때문이지만 버퍼 넘침이라든가 하는 문제도 있고... 길이가 같이 보관되는 다른 자료 구조를 찾으시는 것이 맞다고 봅니다.
댓글 달기