potocanon1234   2년 전

1. fgets로 입력시 버퍼에 \n를 문자열에 그대로 넣고 \0을 추가하므로 배열 a의 크기를 1000002로 했습니다

2. 문자개수는 문자사이의 공백+1

3. i=1~i=strlen(a)-1 을 해서 배열의 처음 부분,마지막을 무시해서 혹시나 그부분에 공백이 와도 무시하도록 했습니다.

그런데 뒤쪽에 공백이 있는 경우 ,앞뒤 동시에 공백이 있는 경우 잘못나옵니다

csydragon09   2년 전

배열의 경우에는 첫번째 글자는 a[0], 두번째 글자는 a[1]인 것 처럼 한칸씩 앞으로 밀려서 입력됩니다!

따라서 이 경우에 strlen(a)-1로 코드를 짜게 되시면 맨 끝까지 다 보게 되는 것이죠.

그래서 이것을 바꾸시면 공백이 뒤에 있거나 앞뒤에 있을 때 생기는 문제는 해결되실겁니다!

csydragon09   2년 전

또, 제가 아까 확인은 했지만 말하지 않은 오류가 있는데요, 찾다가 못 찾으시겠다면 댓글 남겨주시기 바랍니다!

potocanon1234   2년 전

배열의 경우 a[0]부터 들어가니 제가 공백 등을 포함한 문자열 5문자를 입력했다고 가정하면 i=1시작이므로 a[0]을 무시하고 이때 strlen(a)는 5이므로-1을 하면 4이고

i<strlen(a)-1 을 하면 등호가 없으므로 i가 3까지 증가하므로 a[1],a[2],a[3] 까지만 확인하면서 끝인 a[4]를 무시하게 되는거 아닌가요?

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