회신: 73.7 심사문제의 답
, 도장_ 관리자님이 작성온라인 심사는 리눅스 환경에서 실행되고 있습니다.
Unit 41.2를 보면 설명하고 있지만, 리눅스/macOS 환경에서는 strcmp 함수가 반환하는 값이 다릅니다.
Visual Studio에서는 1과 -1을 반환하지만, 리눅스 환경에서는 두 문자의 ASCII 코드 값 차이를 반환합니다. 따라서 > 0 또는 < 0인 숫자를 반환합니다.
문의한 코드는 Windows 플랫폼, Visual Studio에서만 실행됩니다. Windows, Linux, macOS 플랫폼에서 모두 실행되고, Visual Studio, GCC에서 모두 동작하는 코드를 작성하고 싶다면 == 1 대신에 > 0으로 작성하고, == -1 대신에 < 0으로 작성해야 합니다.
Unit 41.2의 예제 string_scanf_compare_linux_osx.c에서도 > 0과 < 0으로 조건문을 작성하고 있습니다.
Unit 41.2를 보면 설명하고 있지만, 리눅스/macOS 환경에서는 strcmp 함수가 반환하는 값이 다릅니다.
한 가지 주의할 점이 있는데 strcmp 함수는 운영체제에 따라서 동작 방식이 조금 다르다는 점입니다. Windows(Visual Studio)에서는 문자열이 다르면 1과 -1을 반환하지만 리눅스와 OS X에서는 ASCII 코드값의 차이를 반환합니다. 그러므로 리눅스와 OS X에서 strcmp의 반환값을 판단할 때는 switch 분기문 대신 if 조건문을 사용해야 합니다.예제 string_scanf_compare_linux_osx.c를 참고하세요.
Visual Studio에서는 1과 -1을 반환하지만, 리눅스 환경에서는 두 문자의 ASCII 코드 값 차이를 반환합니다. 따라서 > 0 또는 < 0인 숫자를 반환합니다.
문의한 코드는 Windows 플랫폼, Visual Studio에서만 실행됩니다. Windows, Linux, macOS 플랫폼에서 모두 실행되고, Visual Studio, GCC에서 모두 동작하는 코드를 작성하고 싶다면 == 1 대신에 > 0으로 작성하고, == -1 대신에 < 0으로 작성해야 합니다.
Unit 41.2의 예제 string_scanf_compare_linux_osx.c에서도 > 0과 < 0으로 조건문을 작성하고 있습니다.