druid0228   1년 전

사이트에 C로 제출하면 정답이고

C++로 제출하면 틀리다고 하는데 왜그런가요?

평소에도 C++로 제출했었는데

yukariko   1년 전

문자열의 범위가 50이기 때문에 배열의 크기는 51로 잡아야합니다.

C로 제출해도 틀렸습니다가 떠야 하는데 이상하군요

jonghyunee   1년 전

yukariko 당연히 [50][50]으로 해도 문제가 없죠..

왜냐면 저 코드에서 char배열은 문자열을 목적으로 선언한 배열이 아니기 때문이죠 즉 null문자가 필요가 없습니다.

int [50][50] 으로 선언한것과 용량빼곤 별반 다를것이 없습니다.

yukariko   1년 전

jonghyunee

목적의 여부와 관계없이, 입력을 받아올 때 오버플로우가 발생하게 되어있습니다.

왜냐하면 입력을 문자열로 받아오기 때문이죠.

jonghyunee   1년 전

yukariko

맞는 말이네요. 좀더 살펴봤어야 했는데..

global로 선언해서 data영역에 오버플로우가 나는부분이라 뒤쪽에 데이터가 없어서 문제가 없나봅니다..

입력용 배열이라 실제로 다른 데이터 침범은 맨마지막 1바이트가 되겠네요.. 나머지는 입력시 각 상위 문자열이 침범한걸 다시 덮어쓰니까..

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