컴퓨터/C
우리가 컴퓨터를 이용해 프로그래밍을 만드는 이유는 근본적으로 보다 편리하고 싶어서입니다.
컴퓨터에게 일을 시키면 결과를 사용자에게 제공을 해주어야 됩니다. 이렇게 사용자에게 결과를 제공해주는 장치들을 출력 장치라고 일컫습니다. 출력장치가 없다면, 컴퓨터에게 아무리 열심히 일을 시켜도 사용자는 결과를 알 수 없습니다.
이런 출력장치에는 정말 다양한 종류가 있습니다. 대표적으로 모니터, 프린터, 스피커 등등 말이죠.
그중 C언어에서는 프로그램의 표준 출력 장치를 모니터로 지정하고 있습니다. 본글에서는 이 모니터에 어떻게 C언어로 출력을 하시는지 알아보겠습니다.
사실 지금 단계에서 C언어에서 모니터에 출력을 하는 구조를 모두 이해를 하기는 어렵습니다. 하지만 공부를 하기 위해서 컴퓨터의 결과를 확인을 하려면 필요하기 때문에 구조와 원리를 이해하는 것이 아니라 사용하는 방법에 대하여 서술하도록 하겠습니다.
C언어에서는 소스코드를 모니터에 출력하기 위해 이미 만들어진 표준 입출력 라이브러리를 제공합니다. 이 라이브러리를 우리의 소스코드에 추가함으로써 이미 컴퓨터의 모니터에 출력을 할 수 있는 방법을 함수의 형태로 제공을 합니다.
함수와 , 라이브러리 , 헤더 파일 등 지금은 정확하게 모르셔도 됩니다. 지금의 목적은 C언어에서 출력을 하기 위해 기본적으로 제공하는 방법과 , 사용하는 방법에 대하여 알기 위함입니다.
표준 출력을 하기 위해서는 표준 입출력 라이브러리를 추가해야 됩니다. 그러기 위해서 그 라이브러리의 헤더 파일을 추가해야 됩니다. 지난 글들에 예제에 항상 들어가 있던 내용입니다.
Standard input output의 약자로 stdio.h를 추가해 주어야 합니다.
표준 입출력의 함수를 사용하기 위해서는 작성하는 소스코드에 아래 형식대로 추가가 필요합니다.
#include<stdio.h> //표준입출력 라이브러리 헤더파일 추가 적용하는 형식
표준 입출력 라이브러리 안에 함수의 형태로 출력을 하기 위한 소스코드가 만들어져 있습니다. 우리는 이 함수들을 불러와서 사용을 하게 됩니다. 함수를 불러오는 방법을 간단하게 설명하자면 아래와 같습니다.
함수의 이름(매개변수);
출력 함수를 호출하기 위해서 우리는 2가지를 알고 있어야 됩니다.
영어 그대로 해석하자면 int 타입의 매개변수를 받아, char형태로 보내는 함수입니다.
즉, 문자를 출력하는 함수입니다. 하나의 문자만 출력할 수 있고, 줄 넘김이 없습니다.
예제 1) 기본 형태
#include <stdio.h>
int main()
{
putchar(66);
putchar('A');
return 0;
}
결과 보기
숫자를 넣으면 아스키코드에 의해 문자로 출력이 됩니다.
또한 ''를 이용하여 문자를 넣는 것도 가능합니다.
예제 2) 문자가 아닌 문자열을 넣으면?
#include <stdio.h>
int main()
{
putchar('AB');
return 0;
}
결과 보기
가장 후위에 있는 값을 출력합니다.
예제 3) 아스키코드에 없는 값을 넣으면?
#include <stdio.h>
int main()
{
putchar(1000);
//또는 '가'등 없는 아스키코드표에 존재하지 않는 값을 넣어보세요
return 0;
}
결과 보기
없는 값이므로 정확한 값이 나오지 않습니다.
puts는 문자열을 출력하는 함수입니다. const char*는 포인터의 와 변수의 상수화 등을 알고 있어야 이해가 되기 때문에 생략하겠습니다. 지금은 puts의 매개변수는 문자열이라고 알고 있으면 됩니다. puts는 문자열을 받기 때문에, 줄 넘김이 포함되어 있습니다.
예제 1) 기본 형태
#include <stdio.h>
int main()
{
puts("반값습니다 puts함수입니다.");
puts("이 함수는 자동으로 줄넘김이 됩니다.");
return 0;
}
결과 보기
예제 2) puts에 숫자를 넣으면?
#include <stdio.h>
int main()
{
puts("100+100");
puts(100+100);
return 0;
}
결과 보기
puts함수는 문자 타입의 데이터만 출력을 할 수 있습니다.
예제 2의 소스코드에서 "100+100"은 ""를 사용하여 문자열을 표시하여 계산을 한 것이 아닌 100+100의 문자열을 표현을 하여 출력이 가능하였지만
100+100은 정수의 연산이 되었지만 puts의 정확한 매개변수가 아니기 때문에 출력을 할 수 없습니다.
사실 putchar와 puts는 특수한 경우에는 유용할 수 있지만 대부분 printf함수로 사용을 합니다. 그만큼 강력하고 편리하기 때문입니다.
printf함수는 C언어에서 약속한 포맷(서식지 정자)을 통해 서식화된 출력을 지원합니다. 아래와 같이 사용합니다.
지난 글들의 예제에서 많이 봤을 거라 생각됩니다.
printf("서식이 포함된 포맷", 서식지 정자....);
여기서 불가피하게 우리는 서식지 정자를 알고 있어야 합니다. 서식지 정자는 %+약속된 문자의 조합으로 설정되며 다음과 같습니다.
서식지정자 | 출력 형태 |
%c | 문자 |
%s | 문자열 |
%d | 10진 정수 |
%i | 부호 있는 10진 정수 |
%f | float 실수 |
%lf | double 실수 |
%o | 8진 정수 |
%x %X | 16진 정수 |
%e %E | e표기법 실수 |
%% | %의 표시 |
기본적으로 자주 쓰는 것을 알고 있으면 조금 더 함수를 사용하는데 유용할 것입니다. 공부를 할 때 많이 사용되는 함수이기 때문입니다.
예제 1) printf 써보기.
#include <stdio.h>
int main()
{
int a = 10;
char b = 'a';
float c = 0.1;
printf("int a 의 값은 : %d 입니다",a);
printf("char b 의 값은 : %c 입니다",b);
printf("flaot c 의 값은 : %f 입니다",c);
printf("%%출력은 이렇게 해야 됩니다.");
return 0;
}
결과 보기
결과를 보면 원하는 서식대로 값이 나오긴 합니다. 하지만 줄 넘김이 없습니다. 생각한 것과는 조금 다르죠.
우리는 이러한 표현을 하기 위해 이스케이프 시퀀스도 알고 있어야 됩니다.
이제 printf를 통해 원하는 서식을 만들고 서식에 맞는 데이터를 출력을 할 수 있게 됐습니다. 결과가 만족스러웠나요? 우리가 지금 쓰고 있는 콘솔 창의 경우 커서, 즉 출력을 하는 위치가 있습니다. 이 커서를 제어하는 것이 바로 이스케이프 시퀀스입니다. 규칙은 역슬래시(\)와 조합하여 사용하며 다음과 같습니다.
표현 방식 | 출력 내용 |
\n | 줄넘김 |
\\ | 백슬래시 |
\t | 수평 탭 |
\' | 작은 따옴표 |
\" | 큰 따옴표 |
예제 1) printf 써보기. (+이스케이프 시퀀스)
#include <stdio.h>
int main()
{
int a = 10;
char b = 'a';
float c = 0.1;
printf("int a 의 값은 : %d 입니다\n",a);
printf("char b 의 값은 : %c 입니다\n",b);
printf("flaot c 의 값은 : %f 입니다\n",c);
printf("%%출력은 이렇게 해야 됩니다.\n");
return 0;
}
결과 보기
표준 입출력을 익숙해지기 위해 생각해 봅시다.
문제 1 )
결과 보기
#include <stdio.h>
int main()
{
printf("이스케이프 시퀸스 \\n은 줄넘김 입니다.\n\n");
printf("\"안녕하세요\" 출력을 할수 있나요 ?\n\n");
return 0;
}
문제 2 )
결과 보기
#include <stdio.h>
int main()
{
int A = 1452;
printf("int 형 변수 A가 있습니다\n");
printf("A의 값은 1452입니다. 3가지 형태로 printf 서식지정자를 통해 출력해보세요\n");
printf("1번 기본 %%d 사용 : %d\n",A);
printf("1번 기본 %%x 사용 : %x\n", A);
printf("1번 기본 %%X 사용 : %X\n", A);
return 0;
}
본문 중 궁금한 서식자가 있으면 직접 한번 써보고 결과를 보시는 것도 좋은 연습이 될 수 있습니다. C언어를 공부하면서 바로바로 결과를 확인하기 위해 필수인 함수이니 꼭 기억하고 익숙해지길 권장합니다.
C 언어 - 조건문 if else (0) | 2021.05.30 |
---|---|
C 언어 - 조건문 IF (0) | 2021.05.29 |
C 언어 - 주석(Comment) (0) | 2021.05.24 |
C 언어 - 연산자 (0) | 2021.05.24 |
C 언어 - 문자의 자료형 (0) | 2021.05.23 |
91년생 공학엔지니어의 개발일지
TODAY :
YESTER DAY :
TOTAL :
Commnet