본문 바로가기

기초공부/C

[C]상수 형태의 문자열

문제를 풀던 중 헷갈렸던 부분이 있어서 정리한다.

strcpy_s함수를 사용하던 중 문제가 발생했다.



왜 안 되는지 예제와 비교하여 확인해보았다. str을 포인터로 선언했고 예제에서는 배열로 선언했다는 점이 유일하게 달랐다. 실제로 배열로 선언해서 실행하니 프로그램이 원활하게 돌아갔다.



이유를 생각해보니 이전에 포인터에서 공부했던 내용과 연관시킬 수 있었다. 포인터로 선언한 문자열은 변환할 수 없고, 배열로 선언한 문자열은 변환할 수 있다. 이를 떠올리니 왜 실행이 되지 않았는지 이해했다. strcpy는 문자열을 변환하는 함수이므로 포인터 형식의 문자열을 사용할 수 없다. 그걸 까먹고 sizeof 연산자의 문제인지 한참 헤메고 있었다. 하하하.