smkyu1919   6년 전

갓 C언어 시작한 초짜입니다!

100칸 조건과 공백포함 조건까지 충족시켰습니다.

로컬에서는 예제 입력해서 원하는 결과물이 출력이됩니다.(2017 visual studio)

여기 제출에서만 런타임 에러가 뜨네요. 왜 그러는 건지 .. 제가 놓치고 있는게 뭔지

알려주시면 감사하겠습니다.

(간혹 다른문제들도 결과물은 잘나오는데 제출시에는 런타임 에러가 발생하는데

런타임에러가 발생하는 근본적인 주요 원인이 보통 무엇이 있는지도 알려주시면 정말 감사하겠습니다.!)

yys11631   6년 전

0. 들여쓰기 하는 습관을 들입시다. 코드가 길어지면 남들은 둘째치고 자기가 볼 때도 힘들어 질 수 있습니다.

1. gets는 개행(엔터)가 입력되기 전까지 1줄을 입력받고 읽어들인 문자열은 줄 바꿈 하는 곳에서 \0(널문자)이 붙여진 배열에 저장됩니다. n개의 문자가 있는 문자열을 입력받았다면 끝을 알리는 문자 \0까지 해서 총 n+1개의 문자를 저장합니다. 그래서 최대 100글자까지 입력할 수 있다면 배열의 크기는 101이상으로 해야합니다. 백준 문제는 메모리 제한이 넉넉하므로 배열의 크기는 필요보다 조금 크게 잡는게 정신건강에 좋습니다.

2. 이 문제의 입력은 3개가 아닙니다. 예시는 3개이더라도 다른 입력은 3개보다 많을 수도 적을 수도 있습니다. 구글에 EOF관련해서 검색해보세요. 초짜한텐테 좀 이르긴 하니 저장했다 푸셔도 좋을 듯합니다.

ps. 1에서 말한 이유와 관련한건데 gets는 보안 등의 취약해서 c++에선 안 쓰입니다. 지금은 써도 상관없는데 만약 c++ 공부할 때 gets가 안 된다고 걱정하지 마시고 다른 입력 방식을 찾아보세요.

smkyu1919   6년 전

감사하옵니다!

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