jmsnzz   3년 전

c++ string 을 사용해서 먼저 했을때는 정답으로 나와서 c로 다시 해보던 과정에서 

string s 를 char s[21]으로 바꾸고 s길이 len 을 구하는 반복문(C++ 의 s.length() 대신)만 추가하여 코드를 작성했는데 틀렸다고 나오네요..

어디가 잘못됐을까요..?

shg9411   3년 전

char s[20]은 20글자를 담을 수 없습니다.

hs9200   3년 전

char s[20]은 20글자를 당연히 담을 수 없습니다.

c언어 당연히 배우신 분일테지만 알려드리겠습니다

char s[0]은 널 문자로 채워져있어요

그리고 s[20]은 당연히 20개의 방을 가지고 있으니까

s[0]~s[19]까지가 s의 범위 입니다

그리고 여기서 s[0]은 널문자로 문자를 담을 수 없기 때문에

19글자(s[1]~s[19])까지만 문자를 담을 수 있는겁니다

따라서 20글자를 담을 수 없습니다.  

djm03178   3년 전

s[0]이 널 문자로 채워진 것이 아니라, 반대로 문자열의 끝에 있는 것입니다. s[0]에도 일반 문자를 채울 수 있습니다.

단순히 문자 20개를 담는 거라면 s[0]부터 s[19]까지 채워도 됩니다. 하지만 문자'열'이 되기 위해서는 s[20]에 널 문자가 들어가야 하는데 이 인덱스는 배열의 범위를 벗어나기 때문에 20글자의 문자열은 담을 수 없습니다.

jmsnzz   3년 전

char s[] 크기를 늘려도 틀렸다고 나오네요 ㅠㅠ null 생각해서 21로 늘려도 안되고 더 크게 해도 안되네용..

djm03178   3년 전

23번째 줄 i가 아니라 j여야 합니다.

jmsnzz   3년 전

아... 감사합니다.. 항상 이런 건 90프로 이상 오타 문제네요 정말 감사합니다 ㅠㅠ 

댓글을 작성하려면 로그인해야 합니다.