본문 바로가기

공부/C언어

20. visual studio에서 sprintf 사용하기

728x90
반응형

main.c

#include <stdio.h>

union converter { 
 float f_val; 
 short u_val[2]; 
}; 

void main(void) { 
 float test1 = 40.26; 
 char PID_val[50] = {0,}; 

 union converter conv; 

 conv.f_val = test1; 
 printf("%x %x\r\n", conv.u_val[1], conv.u_val[0]); 

 sprintf(PID_val, "TEST %04X%04X", conv.u_val[1],conv.u_val[0]); 

 printf("\r\n%s\r\n", PID_val); 
}

1. 처음에 위에 코드대로 돌리면 아래와 같은 오류가 뜬다.
오류 C4996 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 

SDL 검사에 아니오를 선택하면 사라진다.

2.  sprintf(PID_val, "TEST %04X%04X", conv.u_val[1],conv.u_val[0]); 

여기서 %04X를 안하면 4자리수가 안되었을 때 0이 표시가 안되서 오류가 발생할수 있음

40.26이 16진수로 4221 a3d 인데... %04X를 안하면 4221a3d로 표시된다.

결과화면

 

추가

sprintf_s 를 사용 하여 해결할수 있다.

#include <stdio.h>

void main(void)
{
	char test[20] = {0,};
	int	 val_test = 20;
	sprintf_s(test,sizeof(test),"val_test=%d",val_test);
	printf("%s\r\n",test);
}

결과 화면

728x90
반응형

'공부 > C언어' 카테고리의 다른 글

22. 구조체 배열 변수 선언  (0) 2019.07.10
21. *(int*) 응용  (0) 2019.07.09
19. union 응용  (0) 2019.07.08
18. typedef enum 응용  (0) 2019.05.10
17. 배열과 포인트  (1) 2019.05.03