h00201   4년 전

getchar와 putchar를 이용해서 문제를 풀어보려고 만들었는데, 하다가 안되어서 getline으로 갈아타서 문제를 해결했습니다.

하지만 char를 이용한 방법에 정확히 어떤 문제가 있는지 알고 싶어서 질문드리게 되었습니다.

현재 다른 코딩 프로그램을 사용하지 못해서 정확히 제가 쓴 코딩이 어떻게 잘못되었는지 파악을 할 수 없습니다.

코딩 실력 또한 기초적이라서 제가 아무리 봐도 정확히 어떤 부분이 문제가 되는지를 잘 모르겠네요.

도와주시면 감사드립니다.

simm4256   4년 전

개행문자를 만나도 종료되지 않고 계속 입력받겠네요.

그럼 100줄에 100글자씩이니 최대 10000개의 글자가 입력될탠데 배열크기가 너무 작고요

종료 조건문도 NULL이 아니라 EOF가 되어야 할 듯 합니다.


getchar와 putchar만 써서 AC 맞은 코드 첨부합니다.

h00201   4년 전

+그러면 EOF로 바꾸었을 때 런타임 에러가 난 것이 배열 크기가 작아서인가요? 

kyhdudgns113   4년 전

문자열을 입력받을때 끝에 자동으로 NULL 문자가 삽입되는건 아시는것 같습니다. 이는 컴파일러가 알아서 넣어주는것이라 생각할 수 있는데요.

말 그대로 컴파일러가 "알아서"넣어주는겁니다. 우리가 NULL 문자를 입력하는것이 아닙니다.

즉, 주어지는 입력 어디에도 NULL 문자는 없습니다. 따라서 getchar() 가 NULL 을 리턴하지를 않게되고, while 문은 종료가 되질 않게 됩니다.

따라서 파일의 끝을 나타내는 EOF(-1) 를 입력받을때까지 getchar() 함수를 호출하셔야 합니다.


그리고 문장은 사이즈가 100인 문자열을 100줄까지 입력을 받는데, 배열은 하나만 선언이 되었네요.


h00201   4년 전

kyhdudgns113 // 앗, 감사합니다. 역시 사이즈도 문제가 있었던 거군요.

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