본문 바로가기

삼성전자 알고리즘/기타

5. Visual Studio 팁

1. scanf() 사용하기 (출처 : https://popbox.tistory.com/17)

Visual Studio 2019 버전에서 scanf() 사용시

오류 C4996 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.

에러가 남.

scanf()의 오버플로우 가능성 때문에 2010버전 이상의 컴파일들이 sacnf()를 사용못하게 하는 것.

scanf()를 그대로 사용하기 위해서는

전처리기 위쪽에 매크로 정의 필요 :

 

#define _CTR_SECURE_NO_WARNINGS
#include <stdio.h>
int main(){
	return 0;
}

C++에서 printf/scanf를 사용하려는데 이런 에러가 났을 때 Tip.

 

#define  _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <stdio.h>
using namespace std;
int main() {
	int a, b, answer;
	scanf("%d %d", &a, &b);
	answer = a * b;
	printf("%d\n", answer);
	return 0;
}

#include <stdio.h> 를 추가해준다.

 

2.printf에서 '%'를 문자로 출력 : printf("%%\n");

printf("%%\n");

3.C/C++ 반올림 함수 및 소수 출력 방법

C에서 소수점 첫번째 자리까지 출력하는 방법 :

#include <stdio.h>
#include <math.h>
int main(){
	double answer = 3.4;
    //올림
    printf("%0.1lf\n", ceil(answer));
    //내림
    printf("%0.1lf\n", floor(answer));
    //반올림
    printf("%0.1lf\n", round(answer));
    
    return 0;
}

C++에서 소수점 첫번째 자리까지 출력하는 방법 : (자동으로 반올림 됨)

#include <iostream>
using namespace std;
int main() {
	//소수점 출력.
	cout.setf(ios::fixed, ios::floatfield);
	//소수점 아래 1자리 출력
	cout.precision(1);
	cout << 2.44  << endl;  //2.4 출력
	cout << 2.445 << endl;  //2.4 출력
	cout << 2.45  << endl;  //2.5 출력
}

소수 이하 2 자리 ( 세 번째 자리에서 반올림 ) 하는 법 :

answer = round((a * b)/2*100)/100; //100을 곱한 뒤 반올림 하고 다시 100으로 나눔. =>소수 3번째에서 반올림 효과