이런 복잡하고 긴 코드를 올리실 때, 중요 부분 옆에 주석처리 하고, 그 소스를 설명해 주세요.
9536번 - 여우는 어떻게 울지?
아, 원인을 알 것 같네요. 질문과 상관 없는 내용으로 가서 죄송하지만, 22번째 줄과 같은 문장은 아마도 undefined behavior입니다. 전위 증가 연산자를 사용한다고 해서, 그게 가장 먼저 j의 값을 변경하고 그 뒤에 나오는 j도 새로운 값을 따른다고 보장이 안 됩니다. 그래서 환경에 따라서 동작이 달라질 수 있습니다. 제가 사용하는 VS 2017에서는 저 코드가 다음과 같이 동작합니다.
a[j - 1][strlen(a[j]) - 1] = '\0';
j--;
하지만 원하는 동작은
j--;
a[j][strlen(a[j]) - 1] = '\0';
일 테고, 앞으로는 원래 코드와 같은 위험하고 표준에서 동작이 정의되지 않는 표현 대신에 이와 같은 안전한 방법을 사용하시기 바랍니다.
댓글을 작성하려면 로그인해야 합니다.
adfsfsf 5년 전 1
c++로 strtok을 대신하는 알고리즘을 검색해서 적용한 코드입니다. 제가 c로 짠 코드를 포팅한 코드입니다. 이중 선 위가 c, 아래가 c++코드입니다. 반례가 있다면 알고 싶습니다.