03. 표준입출력 (1)

SeongMin Kim·2021년 5월 12일
0

C 프로그래밍

목록 보기
3/5
#include <stdio.h> //전처리하는 부분

int main(void) //운영체제가 호출
{
    printf("Hello C world"); //모니터에 출력
    return 0; //운영체제에게 값 반환 후, main() 종료
}

printf는 출력 함수, scanf는 입력 함수이다.

더 자세히 알아보자.

printf

printf는 모니터에 데이터를 출력하며 stdio.h 헤더 파일이 필요하다.
데이터를 출력할 때 아래 특수문자들은 아래에 나열한 정의대로 출력된다.

\n : 줄바꿈
\b : 백스페이스(Backspace)
\f : 폼 피드(Form Feed)
\r : 캐리지 리턴(Carriage Return)
\t : 수평 탭(탭을 친 것 처럼 들여쓰기)
\v : 수직 탭
\ : 역슬래시
\' : 작은 따옴표
\" : 큰 따옴표

#include <stdio.h>
int main(void)
{
    printf("\t Hello C! \n Hello world! \n");
    printf("큰따옴표 : \" \" \" \n");
    printf("작은또옴표 : \' \' \n");
    printf("역슬래시 : \\");
}

출력 서식 문자

위와 같이 출력 서식 문자를 사용해 계산 결과를 printf문 안에서 사용할 수 있다.

숫자와 관련된 출력 서식 문자는 아래와 같다.

%d, %i : 10진수 정수(양수 음수 모두 가능)
%x, %o : 16진수 정수, 8진수 정수(양수만)
%f, %lf : 10진수 실수(양수 음수 모두 가능 lf : long float)

#include <stdio.h>
int main(void)
{
    printf("%d 더하기 %d 는 %d 입니다 \n", 3, 5, 3+5);
    printf("%d 더하기 %i 는 %i 입니다 \n", 3, 5, 3+5);
    printf("%d - %d = %d 입니다 \n", 3, 5, 3-5);
    printf("%i - %i = %i 입니다 \n", 3, 5, 3-5);
    
    printf("10진수: %d는 16진수: %x, 8진수: %o 입니다. \n", 50, 50, 50);
    printf("10진수: %d는 16진수: %x, 8진수: %o 입니다. \n", -50, -50, -50);
	// 음수는 16진수 8진수가 이상한 값이 나옴 쓰레기 값... 에러는 안남
    
    printf("10진수 정수: %d \n", 0.5);
    printf("10진수 실수: %f \n", 0.5);
    printf("10진수 실수: %lf \n", 0.5);
	
    printf("소수점 이하 6자리 이상: %f \n", 0.5655678); // 반올림
    printf("소수점 이하 6자리 이상: %lf \n", 0.566778); // 더 많이 씀 (데이터의 손실을 줄이기 위해)

    return 0;
}
문자와 문자열과 관련된 출력 서식 문자는 다음과 같다.

%c : 한 개의 문자
%s : 문자열

#include <stdio.h>
int main(void)
{
    printf("a를 대문자로 표현하면 %c 입니다. \n", 'A');
    printf("%s %c 입니다. \n", "a를 대문자로 표현하면", 'A');
    printf("%s %d %s \n", "2곱하기 3은", 2 * 3, "입니다.");

    return 0;
}

큰 따옴표는 한 개의 문자일지라도 문자열로 인식한다는 것에 주의하자.

다음은 10진수 정수 중 양수를 출력하는 출력 서식 문자이다.

%u : 10진수 정수(양수만 가능)

#include <stdio.h>
int main(void)
{
    printf("%d \n", 2147483647); //%d의 최고값
    printf("%d \n", 2147483648);
    printf("%u \n", 4294967295); //%d의 두배

    return 0;
}

%d는 음수와 양수 모두 표현이 가능하고, %u는 양수만 표현 가능하지만, %u는 %d의 2배의 범위를 표현할 수 있다.

기타 실수 표기법들은 다음과 같다.

%e : e표기법에 의한 실수
%E : E표기법에 의한 실수 (소문자 대문자만 다름, 사실 같음)
%g : 소수점 이하 자리수에 따라 %f, %e 둘 중 하나를 선택
%G : 소수점 이하 자리수에 따라 %f, %E 둘 중 하나를 선택
(소수점 6자리를 기준으로 %f, 넘어가면 지수형태로 표현)
%% : 퍼센트 기호 출력 (대소문자만 다름)

#include <stdio.h>
int main(void)
{
    printf("%f \n", 0.000123);
    printf("%f \n", 0.0001236);

    printf("%e \n", 0.000123);
    printf("%E \n", 0.0001236);

    printf("%g \n", 0.000123);
    printf("%G \n", 0.0001236);

    printf("올해 우리나라 경제 성장률은 5%%이다. \n");

    return 0;
}
필드 폭 지정

print 할 때 숫자의 자릿수를 얼마나 확보할 것인지에 대해 미리 정할 수 있다.

%03d 필드 폭을 3 칸 확보하고 오른쪽 정렬, 남은 자리는 0으로 채움
%-3d 필드 폭을 3 칸 확보하고 왼쪽 정렬
%+3d 필드 폭을 3 칸 확보하고 오른쪽 정렬, 양수는 +, 음수는 -출력

#include <stdio.h>
int main(void)
{
    printf("%03d, %03d, %03d \n", 1, 20, 300);
    printf("%-03d, %-03d, %-3d \n", 1, 20, 300);
    printf("%+03d, %+03d, %+3d \n", 1, 20, 300);
    printf("%+3d, %+3d, %+3d \n", 1, 20, -300);

    return 0;
}
profile
갈팡질팡

0개의 댓글

관련 채용 정보