buffer에 문자열이나 배열을 삽입하고자 할 때 사용하는 함수이다.
snprintf(buffer, size_of_buffer, string or array)
첫번째 인자는 buffer, 두번째 인자는 해당 buffer의 크기, 세번째 인자는 data가 담긴 문자열(배열)이다. 해당 함수를 실행하면 buffer에 문자열이나 배열에 담긴 data가 그대로 담겨진다.
문자열의 크기를 정해줄 수 있고, buffer의 크기보다 큰 데이터가 입력받아 발생하는 오버플로우를 방지할 수 있어 sprintf보다 snprintf를 많이 활용한다.
해당 buffer의 크기를 return한다.
출력값을 나타낼때 사용하는 %s, %d와 같은 개념들은 단순히 변수값을 출력하는 것이 아니라, 전달받는 변수의 종류에 따라 변수값이나 주소값 등을 받을 수 있다.
printf는 해당 문자열을 받아서 null값이 나타날때까지 출력하는 함수이다. 배열을 받는 경우에도, 배열의 요소 중 null값이 나타날때까지 문자열 형태로 출력한다.
이때 %s는 주소값을 전달받아야 하고, 배열의 경우 포인터로 선언되어있어도 그 자체로 배열주소값을 포함하고 있기 때문에, 배열 자체를 그대로 넘겨주어도 무방하다.
C언어를 할때마다 가장 많이 나오고 헷갈리는 부분이다. *ptr은, ptr이라는 포인터 변수가 생성되고 이 포인터 변수가 가르키는 값은 변수 값이 아니라 변수 값의 주소값이다.
*value > 해당 포인터가 가르키는 주소값에 해당하는 변수값
&value > 해당 value 값의 주소값
value > 해당 value 값의 주소값
각 변환형이 어떠한 형태로 변수를 전달받는지, 주소값을 전달받아도 되는 형태인지, 문자열을 받는지 혹은 배열을 받는지 등을 명확하게 알고 있어야 함을 기억하자.
sprintf/snprintf - https://ks1171-park.tistory.com/7
포인터 변수 - https://accompani-i.tistory.com/208