11718번 - 그대로 출력하기
문제를 푼다는 건, 해당 코드가 문제에 주어진 조건에 맞는 입력들에 대해 항상 올바를 정답을 출력할 수 있게 만들어야 한다는 뜻입니다. 이 코드는 비주얼 스튜디오건 어느 컴파일러건 올바른 정답을 찾아낼 수가 없습니다. 단순히 실행이 된다고 해서 비주얼 스튜디오에서 되는 게 아니라, 입력을 넣었을 때 답이 잘 나와야 되는 것입니다.
큰 문제점들을 집자면, 우선 n은 char형 하나이기 때문에 문자열로 입력을 받을 수 없습니다. &를 붙인다고 해서 문자열을 입력받을 수 있는 것이 아닙니다. 문자열은 char형 배열에 받아야합니다.
또한 n이 char형이기 때문에 출력 역시 %s로 할 수 없습니다. %s는 문자열을 출력해야 하고, 그러려면 문자열의 시작 주소 (예를 들면, char형 배열의 이름)를 넘겨줘야 하는데, 지금은 그저 char형 하나의 값을 넘겨주고 있습니다. 주소가 있어야 할 자리에 문자 값이 있으니, 답이 잘 출력될 수 없겠죠?
그리고 이 문제는 한 줄이 아니라 여러 줄을 입력받을 수 있어야 하는데, 6번째 줄의 scanf는 한 줄밖에 읽을 수가 없습니다. 여러 줄을 입력받는 방법은, EOF에 대해 알아보셔야 합니다.
지금의 코드는 질문에 올리신 코드보다는 훨씬 낫습니다. 이제 n이 char형 배열이 되었으니까요. 하지만 여전히 문제에서 요구하는 조건을 지키지 못하고 있습니다.
우선, 여전히 이 코드는 단 한 줄만을 입력받고 있습니다. 문제에서는 여러 줄이 주어질 수 있고, 이를 전부 입력받아서 처리할 수 있어야 합니다. 위에서 말씀드린 대로, EOF에 대해 공부해보셔야 됩니다.
또한 문제에서는 "각 줄은 100글자를 넘지 않으며, 빈 줄은 주어지지 않는다." 라고 하고 있습니다. n의 크기가 20인데, 한 줄에 100글자가 들어오면 어떻게 될까요? 20의 크기의 배열에 다 담을 수 있을까요?
댓글을 작성하려면 로그인해야 합니다.
lucychris 2년 전
c언어 공부 처음부터한 초보자입니다. 컴파일에러가뜨는데 무엇때문에 뜨는지 알수없어 질문드립니다 .