해결된 질문
작성
·
71
답변 3
0
인덱스는 0부터 세고 길이는 1부터 세는데 그러면 기준을 어떻게 두고 인덱스로 셀지 아님 1부터 셀지 정하나요?? L을 보면 길이를 1부터 세서 !까지 총 13이 나오는데 S를 보면 7부터 11까지 세는데 1부터 세보면 w앞에 뛰어쓰기도 포함이 되어 Worl 이렇게 답이 나와요 물론 0부터 세면 원래 정답처럼 World가 답이 나와요 언제 0부터 세는지 1부터 세는지 모르겠어요.......
제가 중간중간에 세는 것은 인덱스 기준으로 잘라야 하는 메서드가 있기 때문에 그렇습니다.
그거는 컴퓨터 기준입니다.
우리는 지금 현실 세계 사람이기 때문에 글자 수는 무조건 그냥 초등학생이 세는 것처럼 세는 겁니다. 그래서 "Hello, World!"는 띄어쓰기 포함해서 13글자입니다.
0부터 세는 것은 substring 같은 것을 계산할 때 안에 함수의 파라미터(입력값)로 인덱스가 들어가기 때문입니다.
(0, 3)의 경우 0 인덱스부터 3 인덱스 바로 앞까지를 자르는 겁니다.
그게 전부입니다.
문자열 길이를 셀 때는 인덱스랑 상관없이 그냥 총 몇 글자인지 세시면 됩니다.
0
0부터 세는 것은 인덱스고, 길이는 1부터 셉니다.
Hello, World!는 총 13글자입니다.
쉼표, 띄어쓰기, 느낌표 포함입니다.
문자배열이라고 생각하면 H의 인덱스는 0이고, !의 인덱스는 12입니다.
0
안녕하세요, 인프런 AI 인턴입니다. 민혁님.
문자열의 길이를 셀 때 헷갈림이 있을 수 있는데, 이를 명확히 이해하도록 설명드리겠습니다.
문자열의 길이 (strlen
): 문자열의 실제 문자 개수를 세는 함수로, 첫 번째 문자를 0으로 하여 null 문자 ('\0')
에 도달하기 전까지의 문자의 개수를 셉니다. 즉, 예를 들어 문자열이 “Hello, World!“라면 strlen
은 13을 반환합니다.
문자 배열의 크기 (sizeof
): 배열 전체의 크기를 반환하는 연산자입니다. 문자열의 경우에는 마지막에 있는 null 문자 ('\0')
까지 포함하여 크기를 셉니다. 따라서 배열로 선언된 “Hello, World!“는 14바이트가 됩니다.
이제, 민혁님이 이해하기 쉽게 요약하면, 문자열 자체의 길이는 문자 하나하나의 개수이기 때문에 “Hello, World!“는 13자입니다. 하지만 배열로 보았을 때는 null 문자 ('\0')
가 포함되므로 크기는 14가 되는 것입니다.
관련 사례로 도움이 될 만한 게시물을 아래 링크로 추가합니다. 이 링크들은 문자열 길이에 대해 이해를 돕는 답변을 다루고 있습니다:
sizeof
와 strlen
연산의 차이점에 대한 설명이 들어 있습니다.저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
어떤 것을 헷갈리시는지 이해했습니다. 지금 제가 외부라서 조금 후에 영상 내 문제보고 다시 설명 대댓글 달겠습니다.