[C/C++] snprintf

Hyo Kyun Lee·2022년 9월 7일
0

C/C++

목록 보기
19/23

1. snprintf

buffer에 문자열이나 배열을 삽입하고자 할 때 사용하는 함수이다.

2. 인자

snprintf(buffer, size_of_buffer, string or array)

첫번째 인자는 buffer, 두번째 인자는 해당 buffer의 크기, 세번째 인자는 data가 담긴 문자열(배열)이다. 해당 함수를 실행하면 buffer에 문자열이나 배열에 담긴 data가 그대로 담겨진다.

문자열의 크기를 정해줄 수 있고, buffer의 크기보다 큰 데이터가 입력받아 발생하는 오버플로우를 방지할 수 있어 sprintf보다 snprintf를 많이 활용한다.

3. return

해당 buffer의 크기를 return한다.

4. 관련 유의사항

출력값을 나타낼때 사용하는 %s, %d와 같은 개념들은 단순히 변수값을 출력하는 것이 아니라, 전달받는 변수의 종류에 따라 변수값이나 주소값 등을 받을 수 있다.

  • printf(%s)

printf는 해당 문자열을 받아서 null값이 나타날때까지 출력하는 함수이다. 배열을 받는 경우에도, 배열의 요소 중 null값이 나타날때까지 문자열 형태로 출력한다.

이때 %s는 주소값을 전달받아야 하고, 배열의 경우 포인터로 선언되어있어도 그 자체로 배열주소값을 포함하고 있기 때문에, 배열 자체를 그대로 넘겨주어도 무방하다.

  • 포인터 변수

C언어를 할때마다 가장 많이 나오고 헷갈리는 부분이다. *ptr은, ptr이라는 포인터 변수가 생성되고 이 포인터 변수가 가르키는 값은 변수 값이 아니라 변수 값의 주소값이다.

*value > 해당 포인터가 가르키는 주소값에 해당하는 변수값
&value > 해당 value 값의 주소값
value > 해당 value 값의 주소값

각 변환형이 어떠한 형태로 변수를 전달받는지, 주소값을 전달받아도 되는 형태인지, 문자열을 받는지 혹은 배열을 받는지 등을 명확하게 알고 있어야 함을 기억하자.

5. 참고자료

sprintf/snprintf - https://ks1171-park.tistory.com/7
포인터 변수 - https://accompani-i.tistory.com/208

0개의 댓글