2675번 - 문자열 반복
c++ string 을 사용해서 먼저 했을때는 정답으로 나와서 c로 다시 해보던 과정에서
string s 를 char s[21]으로 바꾸고 s길이 len 을 구하는 반복문(C++ 의 s.length() 대신)만 추가하여 코드를 작성했는데 틀렸다고 나오네요..
어디가 잘못됐을까요..?
char s[20]은 20글자를 담을 수 없습니다.
char s[20]은 20글자를 당연히 담을 수 없습니다.
c언어 당연히 배우신 분일테지만 알려드리겠습니다
char s[0]은 널 문자로 채워져있어요
그리고 s[20]은 당연히 20개의 방을 가지고 있으니까
s[0]~s[19]까지가 s의 범위 입니다
그리고 여기서 s[0]은 널문자로 문자를 담을 수 없기 때문에
19글자(s[1]~s[19])까지만 문자를 담을 수 있는겁니다
따라서 20글자를 담을 수 없습니다.
s[0]이 널 문자로 채워진 것이 아니라, 반대로 문자열의 끝에 있는 것입니다. s[0]에도 일반 문자를 채울 수 있습니다.
단순히 문자 20개를 담는 거라면 s[0]부터 s[19]까지 채워도 됩니다. 하지만 문자'열'이 되기 위해서는 s[20]에 널 문자가 들어가야 하는데 이 인덱스는 배열의 범위를 벗어나기 때문에 20글자의 문자열은 담을 수 없습니다.
char s[] 크기를 늘려도 틀렸다고 나오네요 ㅠㅠ null 생각해서 21로 늘려도 안되고 더 크게 해도 안되네용..
23번째 줄 i가 아니라 j여야 합니다.
아... 감사합니다.. 항상 이런 건 90프로 이상 오타 문제네요 정말 감사합니다 ㅠㅠ
댓글을 작성하려면 로그인해야 합니다.
jmsnzz 3년 전
c++ string 을 사용해서 먼저 했을때는 정답으로 나와서 c로 다시 해보던 과정에서
string s 를 char s[21]으로 바꾸고 s길이 len 을 구하는 반복문(C++ 의 s.length() 대신)만 추가하여 코드를 작성했는데 틀렸다고 나오네요..
어디가 잘못됐을까요..?