-
[C++] 기초 정리(입출력) 및 실습 기록Programming Language/C++ 2022. 7. 23. 13:22
이미 여러가지 프로그래밍 언어로 코드를 구현해봤지만, 매번 정리 없이 하는 것 같아서 기본적인 것이지만 기록을 해두려고 한다.
1. 간단한 정수의 덧셈 결과 출력
12345678#include <stdio.h>int main(){printf("%d + %d = %d\n", 2, 3, 5);}
// 출력: 2 + 3 = 5cs 2. 서식 지정자
123456789101112131415161718#include <stdio.h>int main(){// %d : 정수 출력printf("%d + %d = %d\n", 2, 3, 5);// %f : 실수 출력printf("%f\n", 3.14);printf("%.2f\n", 3.14159);// %c : 1글자 출력printf("%c %c %c\n", 'a', 'b', 'c');// %s : 문자열 출력printf("%s\n", "안녕하세요");}cs 1. %d: 정수 출력 시 사용
- 정수(소수점 아래가 없는 수)
- 만약 소수점 아래가 있는 수를 출력하면 에러가 나지는 않지만 이상한 값이 출력된다.
2. %f: 실수 출력 시 사용
- 기본적으로 %f는 소수점 6째 자리까지 반올림하여 출력, 만약 6째 자리까지 입력하지 않았을 경우 강제로 0이 뒤에 출력된다.
- 만약 반올림할 자리를 직접 지정하고 싶을 경우 %.2f와 같이 자릿수를 점 뒤에 기입하면 된다.
3. %c: 문자 한 글자를 출력할 때 사용
- 숫자 및 영어 대소문자, 그리고 키보드로 입력할 수 있는 몇몇 기호들을 말한다.
- 한글은 %c 로 출력 불가하다.
- 문자를 표현하려면 작은 따옴표 안에 넣어야한다. ex) 'a'
4. %s: 문자열을 출력할 때 사용
- 문자열은 항상 큰따옴표 안에 넣어야한다. ex) "hello, world!"
3. scanf를 사용한 입력
12345678910#include <stdio.h>int main(){int a, b;scanf("%d%d", &a, &b);printf("%d + %d = %d\n", a, b, a + b);}cs - scanf 함수는 입력 형태에 따라 유연하게 대응함. 따라서 입력 형식이 많이 중요하지는 않다.
- %d 두 개를 썼다면 두 정수가 엔터로 구분되어 있어도 되고, 공백으로 구분되어 있어도 되고, 공백 여러 개로 구분되어 있어도 된다.
- 두 숫자를 아무 구분 없이 입력할 경우 한 정수로 인식한다.
4. scanf의 서식 지정자
12345678910111213#include <stdio.h>int main(){int a;char b;float c;double d;scanf("%d", &a);scanf("%c", &b);scanf("%f", &c);scanf("%lf", &d); // double 입력받을 때 %lf 사용}cs - scanf가 작동하는 특유의 방식 때문에 double을 입력 받을 때는 %lf 라는 서식을 사용해야한다.
- scanf 함수에는 보안 문제가 있는데, 그게 바로 '버퍼 오버플로'이다. 버퍼 오버플로란 예상보다 긴 입력이 들어왔을 때 입력받고자 하는 변수의 범위를 벗어나 엉뚱한 변수의 값이 바뀔 수 있는 현상인데, 이런 취약점을 이용해 해킹을 하기도 했다고 한다. 때문에 입력받을 최대 글자 수를 지정해서 그런 일이 발생하지 않도록 scanf_s 함수가 만들어졌다.
자세한 설명은 아래 블로그를 참고하면 좋을 것 같아 링크를 걸어두었다.
https://m.blog.naver.com/yun4794/221100314808