예전
VisualStudio 버젼에서는 정상적으로 strcpy 표준함수를 사용할수 있었으나 요즘에는 strcpy 를 사용하면 경고를 내보냅니다.
물론 무시할수 있지만 무시하자니 경고누적으로 불안감이 증가하죠...
그래서 울며겨자먹기로 잘 설계된 코드마저도 MS의 강제적인 비표준안으로 코드를 수정해야 합니다.
게다가 이렇게 수정하면 다른운영체제로 포팅할때도 다 수정해주어야 합니다.
참 안좋은 상태만 만들어 가네요.
어쨌건 strcpy, strncpy를 strcpy_s로 바꾸는 작업을 할수밖에 없는데
문제는 기존 코드를 아무생각없이 바꾸었다가는 낭패를 볼수 있습니다.
그래서 정리합니다. strcpy_s와 strncpy는 같은 치환레벨이 아니라는 점을 말입니다.
strncpy로 된 부분을 strcpy_s 로 치환하기 위해서는 크게 문제시 되는것은 두가지 입니다.
하나는 인자의 위치가 다르다는 점이고 또 다른 하나는 Source에 주어지는 문자열이 반드시 Null terminate되어야 한다는 점입니다.
Null terminate되지 않은 경우 일부 Window version에서는 예외가 발생되는데 또 어떤 버젼에서는 잘 돌아간다는 점입니다.
strcpy_s 와 strncpy함수는 동일한 목적의 함수가 아니라는 점을 인지해야 합니다.