본문 바로가기
Programming Language/C++

[C++] 기초 정리(입출력) 및 실습 기록

by Baest 2022. 7. 23.

이미 여러가지 프로그래밍 언어로 코드를 구현해봤지만, 매번 정리 없이 하는 것 같아서 기본적인 것이지만 기록을 해두려고 한다.

 

1.  간단한 정수의 덧셈 결과 출력

1
2
3
4
5
6
7
8
#include <stdio.h>
 
int main() 
{
    printf("%d + %d = %d\n"235); 
}

// 출력: 2 + 3 = 5
 
 
 
cs

 

2. 서식 지정자

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
 
int main()
{
    // %d : 정수 출력
    printf("%d + %d = %d\n"235);
 
    // %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를 사용한 입력

1
2
3
4
5
6
7
8
9
10
#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의 서식 지정자

1
2
3
4
5
6
7
8
9
10
11
12
13
#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

 

[C/C++]scanf와 scanf_s 함수의 차이점. #버퍼 오버플로우, C4996 오류

표준입력함수 scanf / scanf_s자바의 Scanner, 자바스크립트의 prompt C언어의 scanf 그리고 scanf_s 이...

blog.naver.com