* 이번 글은 초보자를 위한 글입니다.
가끔 디버깅을 목적으로 printf(str); 와 같이 작성을 할 때가 있다.
그럼 printf("%s", str); 과 뭐가 다르지?
우선 다음과 같은 코드가 있다고 가정 해 보자.
int main() { char *str = "1234"; printf(str); return 0; }출력이 잘 된다.
그러면 아래와 같이 바꿔보자.
int main() { char *str = "1234%d"; printf(strd); return 0; }결과는?
이런 현상이 발생하는건 printf의 첫번째 인자는 "format" 이라는 형식이기 때문이다.
따라서 일반 문자열 처리하는데는 지장이 없지만, escape 문자를 처리할 때에는 문제가 발생할 수 있다.
따라서 printf("%s", str); 이나 puts(str)로 해야한다.



Attribution/Share Alike 2.0 license






