ckddn1224   4년 전

문자열 한번에 받아서 strtok으로 나눈 후

임시변수에다가 역순으로 저장한뒤 atoi를 사용하여 값 비교하고 출력하게끔 코딩했습니다.

질문검색 게시판에있는 질문글들 다보면서 반례들 다 입력해봐도 제대로 출력되고

제가 임의로 수 입력해도 다 잘됩니다..

무엇이 문제인지 모르겠습니다...ㅠㅠ

jaehoo1   4년 전

https://ideone.com/wOBiXi

예제는 돌려 보셨나요?

ckddn1224   4년 전

dev c++에서만 코드를 돌려봐서 다른 컴파일러에서 돌려보는 것을 미처 생각하지 못했었네요... 죄송합니다

혹시 왜 저런 출력값을 내는지 알 수 있을까요??

jaehoo1   4년 전

코드를 자세히 안보았고, 제가 모르는 함수들도 많이 있어서 자세히는 모르겠지만(시간이 된다면 직접 돌려보겠습니다), 제일 우선적으로 보이는 것은 문자열에 "123 456"을 저장하려면 몇바이트가 필요할까요?

ckddn1224   4년 전

앗! 8바이트 아닌가요?? 그부분은 수정했습니다! 

734 893 을 입력으로 했을때 tmp1의 인덱스 0, 1, 2에는 4, 3, 7이 들어가 있는것까지는 확인했습니다.

제생각엔 마지막 printf("%s\n", tmp1); 이 문제인 것 같은데

배열크기를 3으로 선언하고 그 배열을 출력하면 3까지만 출력되는 것이 아닌가요??? 제가 실수한 부분을 아신다면 답변해주시면 정말 감사드리겠습니다 ㅜㅜㅜ


jaehoo1   4년 전

tmp 크기도 바꾸셨나요?

ckddn1224   4년 전

아.. tmp크기도 바꿔줘야 하는군요...결론은 tmp크기를 4로하니까 됐습니다!

저는 그냥 tmp배열은 대입을 받는 배열이니까 null값이 들어갈 자리가 필요없다고 생각했었는데 

널값이 있는 곳까지를 문자열로 인식하니 크기를3으로하면 널값을 찾지못해서 저런 값이 나오는군요..

정말 감사드립니다! 행복한 오후 되세요!

jaehoo1   4년 전

그리고 tmp배열 뒤에 null이 붙지 않기 때문에

%s로는 정상적인 출력을 할 수 없습니다

ckddn1224   4년 전

도움 주셔서 정말 감사드립니다!

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