게시글
고민있어요
2021.03.22 18:21
나만은 연습문제 안습풀이
- 1
- 0
- 240
질문&답변
2021.02.13
버퍼에 관한 질문 (수정본)
어디선가 C++이 C보다 쉬우니까 C++먼저 배우고 C배우는 것이 좋을 것이라는 말을 들어서 그렇게 됬네요 (웃음). 해당챕터까지 봐서는 C++이 C보다 훨~씬 어려운 것 같아요 ㅋㅋㅋ... (객체지향때문인가..) 잘 이해하다가 버퍼에 걸려서 질문을 드리게 되네요ㅋㅋ. 아무튼 화이팅하겠습니다! 감사합니다 joy님~!
- 2
- 6
- 655
질문&답변
2021.02.13
버퍼에 관한 질문 (수정본)
joy님 소중한 시간 내어 답변해주셔서 정말 감사합니다! 그러게요... 디버깅하면 대부분의 문제를 해결할 수 있는데, 부주의했습니다! 1번 질문은 어쩌다보니 어제 시도해보고 안되니까 선뜻 질문으로 올렸던 것 같습니다 ㅋㅋ;;; (꾸벅..) 답변 4번, 바로 위에 "%는 꺼내지지 않았습니다. rows와 cols는 첫번째 while문에서 각각 3과 2 값으로 입력이 됐었으므로 rows cols는 변동없이 3 과 2 값이 유지됩니다. 이번에 버퍼 앞에 % 가 있는지라 입력을 못받아서 수정이 안됐습니다." 이 부분때문에 먼저 버퍼에 들어가 있는 '#', '빈칸', '\n'순으로 (# 3 2), (빈칸 3 2), (\n 3 2)의 경우의 수가 있겠구나 생각했던 것 같아요. 다시 말하여, 이 문제는 (# 3 2)의 while문이 끝나는 시점에서 버퍼에는 ('빈칸', '\n')이 남아있고, 빈칸이 출력되는 두 번째 while문에서 '빈칸'은 c = getchar로 c에 들어가지만, \n는 whitespace이니까 scanf(%d )에서 거절되고, 버퍼로 다시 돌아가지 않고 사라지게 됩니다. 이후 scanf을 통해 "% 1 2"를 입력 받으니 버퍼는 ('%', 1 2)가 남습니다. 여기서! %는 whitespace가 아니니까 scanf(%d)에서 거절되도 다시 버퍼로 들어가게 됩니다. 그래서 세 번째 while문에서 %는 다시 버퍼에서 c = getchar에 의해 c로 들어가게 되고, 1 2는 scanf(%d %d)로 각각 들어가 잘 출력된 것이군요! (사진) 나름 어제 많은 시간동안 어떻게하면 잘 질문할 수 있을까 고민하면서 이미지도 만들어보고 했는데, 역시 글로는 표현에 제한이 생기네요... 덕분에 개념 정리 잘하고 다음 챕터로 넘어갑니다! 감사합니다~!!!
- 2
- 6
- 655
질문&답변
2021.02.12
(!isspace(c) && !line_flag) 트루??
https://www.inflearn.com/questions/150034
- 0
- 4
- 259
질문&답변
2021.02.12
질문) m1n_q님의 질문의 답변, 이해했는지 확인하고 싶어요.
질문 게시판에 다시 올리도록 하겠습니다. 설 연휴인데, 소중한 시간 내주셔서 검토해주신 정모 선생님에게 진심으로 감사드립니다.
- 0
- 2
- 255
질문&답변
2021.02.11
버퍼 이해 안가는점
다음 사람들을 위해서...) 강의에서 나왔듯이, scanf 특성상 \n를 세지 않는다. 그러므로 scanf에서 받은 rows와 cols의 버퍼에는 \n이 존재하지 않고, getchar로 받은 c의 값에만 '*'과 '\n'이가 존재한다. 따라서 첫 번째 while문에서 '*'를 확인하고, c = getchar() != '\n'에 성립되니, 일단 실행이 된다. 해당 반복문 안에 있는 두 번째 while문에서 c의 버퍼를 다시 검토하고, 여기서 남아있던 '\n'가 있는 것을 확인. \n를 읽어주고 다음 코드로 넘어가게 된다. 만약 두 번째 while문이 없다면, \n이 그대로 남아서 해당 반복문 싸이클이 다 돌고 다시 처음으로 돌아가 while문의 조건을 볼 때, c = getchar() != \n 에 성립되지 않음으로 첫 번째 while문은 실행되지 않고 종료됨.
- 0
- 2
- 185
질문&답변
2021.02.11
5:25 초
다음 사람을 위해서..) 글쓴이는 while 조건에 있는 while((c = getchar()) != '\n')에서 # + 엔터키(\n)을 누른 상태. 문자 '#'은 while((c = getchar()) != '\n')에서 읽어진 상태이고 나머지 문자 '\n'는 두 번째 while문의 continue부분에서 읽혀짐.
- 0
- 2
- 163
질문&답변
2021.02.08
대소 비교 연산자 질문 드립니다!
좋은 QnA였습니다!
- 1
- 2
- 165
질문&답변
2021.02.07
1번 예제 관련 질문이 있습니다
오오 잘 보고 갑니다~!
- 5
- 4
- 376
질문&답변
2021.02.07
6.13 강 1분 23초
다음 분들을 위해서.. "\n"때문에 그렇습니다..
- 0
- 2
- 166