jaewoo717   10달 전


안녕하세요. 문제를 풀던 중 안 풀려 질문합니다.

몇 글자를 받는지 카운팅하기 어려워 

입력 인풋이 100글자 이하라 100개짜리 word[100] 배열에 모든 값을 받은 뒤,

마지막 NULL이 나오기전 까지 cnt로 카운팅하여 cnt크기의 char 배열을 새로 만들어

word에 저장된 글자를 모두 받았습니다.


코드를 실행 해보니 rst[] 배열을 초기화 했고 동적할당으로 cnt크기의 배열을 만들었음에도 불구하고,

100개짜리 크기의 의미없는 값이 추가로 출력됩니다. (입력값은 잘 출력됩니다)

에러로  rst 쪽에서 오류가 뜨는 것 같은데 잘모르겠네요 ㅠㅠ

onjo0127   10달 전

문자의 길이가 100 이하이므로 널문자까지 들어갈 공간을 만들어 주어야 합니다.

배열 길이를 늘려 주세요.


보통 문제 풀 때도 이런 실수를 막기 위해 배열 길이를 넉넉하게 잡아 주시면 좋습니다!


첫 번째 for문은 문자열 길이를 재 주려고 해 주신 것 같은데

<string.h> 헤더파일을 include해서 int len = strlen(배열이름) 해 주시면 변수 len에 배열의 길이가 저장됩니다.


제가 소스코드를 실행해보니 마지막 for문에 조건문만 i < cnt로 바꿔 주면 되네요.

굳이 word배열을 rst배열로 옮길 필요 없이 바로 word를 출력해주시면 됩니다.

동적할당 ~ 두 번째 for문까지는 지워도 됩니다.


마지막으로 출력될 때 첫째 줄이 비워져서 '출력 형식이 잘못되었습니다' 채점을 받을 것 같아요.

i가 0일 때는 줄을 바꾸지 않게 조건문을 달아 주시면 될 것 같습니다.


jaewoo717   10달 전

감사합니다!! 큰 도움이 되었어요!

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