
내용 참고
C++ 기초플러스 4판 (성안당)
혼자 연구하는 C/C++ (Soen.kr/와우북스)
Microsoft Docs (구 MSDN)
C/C++에서 데이터를 출력해보자.
■ 가장 기본적인 main함수 구조에 데이터 입출력을 위한 구조를 추가해보자.
■ 추가되는 부분 중 중요한 부분은 include 문과 기본 입출력 함수 및 클래스이다.
Ⅰ. C언어의 Hello World
#include <stdio.h>
int main()
{
printf("Hello World \n");
return 0;
}
ⅰ. #include <stdio.h>
■ include 명령어는 코드의 가장 상단에 위치하며 코드를 추가하는 역할을 한다.
■ 코드의 맨 윗줄에서 '#'으로 시작하는 명령어들을 '전처리기'라고 하며 가장 먼저 처리되는 코드이다.
■ include문은 소스파일을 추가하는 명령어로 이렇게 추가된 파일을 헤더 파일이라고 한다.
■ 추가된 stdio.h 헤더파일은 표준 라이브러리 중 하나로 표준 입출력에 관련한 함수들을 포함한다.
ⅱ. printf("Hello world \n");
■ C언어 콘솔에서 가장 유명하고 많이 쓰는 콘솔 출력 함수는 printf() 함수이다.
■ printf() 함수는 문자열 포맷을 지정할 수 있는 문자열 출력 함수다.
■ 이외에도 C언어의 콘솔 출력 함수로 문자열 출력 함수인 puts(), 문자 출력 함수인 putch() 등이 있다.
■ \n은 이스케이프 문자라고 하며 줄바꿈을 의미한다.
■ C나 C++에서 명령문이 끝났음을 표현하기 위해서 ;(세미콜론)을 사용한다.
■ 세미콜론을 사용하지 않으면 컴파일러는 뒷 문장과 이어지는 문장으로 인식한다.
Ⅱ. C++의 Hello World
#include <iostream>
using namespace std;
int main()
{
cout << "Hello World C++" << endl;
printf("Hello World \n");
return 0;
}
ⅰ. using namespace std;
■ C++에서는 클래스와 이름공간(namespace)라는 개념이 추가된다.
■ using 문은 사용하려는 namespace를 지정하거나, 문법을 단순화하거나, 템플릿과 관련하여 쓰인다.
■ 가장 기본적인 사용법은 이름공간을 사용하겠다고 선언하는 것이다.
■ std 이름공간은 표준 라이브러리의 이름 공간으로 cout 클래스나 cin 클래스 등이 들어있다.
■ C++에서도 전처리문을 사용하여 헤더파일을 추가한다.
■ iostream 헤더파일은 stdio.h 헤더파일의 함수들도 거의 포함한다.
ⅱ. cout << "Hello World" << endl;
■ C++에서는 함수도 사용하지만 함수보다는 클래스를 더 많이 사용한다.
■ cout은 클래스로 설계에 의해서 printf()와 같은 함수와는 다른 사용법을 갖는다.
■ cout은 출력하고 싶은 문자열을 << 기호를 이용하여 cout쪽으로 밀어넣으면 된다.
■ endl은 cout에서 줄바꿈을 의미한다.
■ 즉, \n 이스케이프 문자와 같은 의미지만 cout에서 \n 이스케이프 문자를 사용할 수 없는 것은 아니다.
■ 위에서 말했다싶이 printf() 함수도 C++에서 사용할 수 있다.
Ⅲ. C언어의 입력 함수
#include <stdio.h>
int main()
{
int a;
scanf("%d", &a);
printf("input : %d \n", a);
return 0;
}
ⅰ. scanf ("%d", &a);
■ C언어의 표준 입출력 함수는 서식이 포함되기 때문에 생각보다 사용법이 복잡하다.
■ 또한 이해하기 위해서 알아야하는 것도 많다. 하지만 지금은 그냥 사용법에 집중하자.
■ 혹은 C++의 입출력 함수로 빠르게 넘어가는 것도 방법이다.
■ scanf()와 printf()에서 f가 포맷이 있다는 의미이다.
■ scanf() 함수는 먼저 포맷을 지정하는 문자열을 적고, 데이터를 받을 변수의 주소 (&변수명)를 적는다.
■ int a; 는 변수를 선언하는 명령이다.
■ &a의 &은 포인터와 관련된 연산자로 a의 주소를 반환한다.
■ 일단 이렇게 쓰면 프로그램이 시작하자마자 입력을 기다리며 입력된 값을 정수형으로 저장한다.
■ 이외에도 문자열을 입력받는 gets(), 문자를 입력받는 getch() 등이 있다.
Ⅳ. C++의 입력 함수
#include <iostream>
using namespace std;
int main()
{
int a;
cin >> a;
cout << "input : " << a << endl;
return 0;
}
ⅰ. cin >> a;
■ C++에서 사용자에게 입력을 받는 대표적인 방법은 cin 클래스를 사용하는 것이다.
■ 확실히 C의 입출력 함수보다 C++의 입출력 클래스가 사용법이 쉬운편이다.
■ cin 클래스는 데이터를 저장할 변수 쪽으로 >> 기호를 사용하면 된다.
■ 서식이나 데이터 타입 등은 cin 클래스가 알아서 처리해주므로 신경쓸게 적다.
ⅱ. cout << "input : " << a << endl;
■ cout 클래스에는 데이터 타입에 따라 넣어주면 된다.
■ "input : " 문자열 상수이고, a는 변수이므로 따로따로 넣어준다.
■ 변수를 여럿 넣을때도 따로따로 넣어준다.
※ 이스케이프 문자표

※ 서식 문자표

■ printf() 함수와 scanf() 함수의 서식 문자에 들어가는 변수는 뒤에 입력한 변수가 순서대로 들어간다.
■ 서식 문자는 기본적으로 '무엇을' 출력할지를 결정하지만 '어떻게' 출력할지도 정할 수 있다.
■ 정수형 서식을 지정하는 %d 앞에 숫자가 들어가면 숫자의 자리수를 나타낼 수 있다.
■ 실수형 서식을 지정하는 %f 앞에 숫자가 들어가면 숫자의 자리수와 소수점 몇자리까지 표현할 지 나타낼 수 있다.
■ 아래 예시 코드를 첨부할테니 바꿔보면서 확인해보면 된다.
■ %d와 %f를 제외한 서식 문자에 대한 것도 비슷하며 자세한 것은 레퍼런스를 참고하길 바란다.
#include <stdio.h>
int main()
{
int a, b = 324;
float f, g = 23.456;
scanf("%d %f", &a, &f);
printf(">%5d<, >%-5d<, >%05d<, >%-5d< \n", a, a, b, b);
printf(">%3f<, >%.2f<, >%4.4f<, >%-10.2f< \n", f, f, g, g);
return 0;
}