[c언어 기초]

우리가 아는 C언어

[c언어 기초] 우리가 아는 C언어

입력과 출력1

출력: printf( )에 대해서
 

printf ()

printf()는 사용가가 원하는 값을 화면에 출력하는 라이브러리 함수이며, <stdio.h>는 printf()가 미리 정의되어 있는 헤더 파일입니다.

 printf()함수의 사용 규칙에 관한 다음 코드를 직접 작성하고 실행해 봅시다.

#include <stdio.h>
main()
{
printf("\n");
printf("Hello, World~1\n");
printf("Hello, World~%d", 2);
}
실행결과

 위 프로그램을 실행하면 첫 번째 줄에는 공백, 2번째 줄에는 “Hello, World~1”, 마지막 줄에는 “Hello, World~2″가 출력됩니다.

  • printf()의 이름은 출력(print)과 형식(format)이 합쳐진 것으로 printf() 함수의 형식은 출력을 어떻게 할 것인가에 대한 정의라고 할 수 있습니다.
  • printf( ) 함수를 사용하기 위해서는 위와 같이 1행에 <stdio.h>라는 헤더 파일이 포함되어야 합니다.
  •  4행의 \n은 큰따옴표(“ ”) 안에 있음에도 불구하고 출력되지 않습니다.
  • 5행은  큰따옴표(“ ”) 안에 있는 모든 데이터를 그대로 출력합니다.
  • 6행에서 큰따옴표(“ ”)내부의 ‘%d‘는 그대로 출력되지 않으며 ‘%d’는 큰따옴표(“ ”)다음에 있는 값(상수나 변수)의 출력 서식을 정해주는 역활을 하는 서식 지정자입니다. ‘%d’는 10진 정수의 약자로, 뒤에 나온 2라는 값을 10진 정수의 형태로 출력한다는 의미이죠.

\n

\n은 앞에서 나왔듯이 줄 바꿈 문자로서 앞의 출력 결과 뒤에 한 줄 띄우는 효과를 주는데, 이와 같은 문자를 제어 문자라고 합니다.

제어문자의 종류 

폼피드 –  위치가 다음 페이지의 시작 부분으로 넘겨진다.(프린터 출력 전용)
캐리지 리턴 –  현재 위치를 나타내는 커서를 맨 앞으로 이동시킨다.

서식 지정자의 종류 

서식 지정자의 쓰임

~진 정수 = ~진수와 같아요!(10진 정수 = 10진수)

printf()함수의 서식 변경

서식 지정자 앞에 특정한 숫자들을 붙이고, 서식을 변경할 수도 있습니다.
아래의 코드를 직접 작성하고 실행해 봅시다
#include <stdio.h> 
main () 
{ 
int a = 365; 
float b = 3.14; 
printf ( "%5d \t", a); 
printf ( "%3.1f \n", b); 
}

실행결과

위 프로그램을 실행하면 서식 지정자 앞에 붙인 숫자에 따라 서식이 다르게 출력됩니다.

‘%d’와 ‘%5d’의 차이는 무었이고, ‘%f’와 ‘%3.1f’의 차이는 무었일까요?
 
  • 6행에서 변수 a의 값이 10진 정수 형태로 출력됩니다. ‘%5d‘에서 정수형 서식 문자 앞에 붙는 숫자는 오른쪽 정렬을 위한 숫자입니다. 즉 5개의 칸을 만들어 놓고 오른쪽으로 정렬하여 출력 하라는 의미이죠 ‘%5d’다음에 한 칸을 띄우고, ‘\t’에 의해 tap키를 누른 만큼의 공백이 발생합니다.
  • 7행에서 변수 b의 값은 부호를 가진 10진 실수 형태로 출력됩니다. ‘%3.1f’에서 정수 자리의 3은 오른쪽 정렬을 위한 숫자입니다. 또한 ‘소수 자리의 1은 소수 둘째 자리에서 반올림 하여 첫째 자리 까지만 출력하라.’는 의미 이죠.

 

printf()함수의 활용

아래의 코드를 직접 작성해보고 printf()의 쓰임과 활용에 대해 알아봅시다.
#include <stdio.h>
main()
{
int a=1;
printf("        1번만 출력하라\n");
printf("%9d번만 출력하라", a); printf("\n");
printf("\t%.0f번만 출력하라\n", 1.23);
}

 실행결과

위 프로그램을 실행하면 각각 다른 형식의 출력 명령에 대해 같은 결과가 출력됩니다.

  • 5행에서 9칸을 띄우고 10칸부터 입력된 데이터를 그대로 출력합니다.
  • 6행에서 1칸을 띄우고 9칸 만큼의 공간을 확보한 후 오른쪽 정렬 형태로 a의 값을 출력합니다. 그 뒤의 “번만 출력하라”는 그대로 출력됩니다.
  • 7행에서 tap키를 누른 만큼 공백이 생기며 탭(tap)은 일반적으로 4~9칸 정도를 띄우게 됩니다.
  • 7행에서 소수점 없이(‘%.0f’) 1.23이라는  실수형 상수를 출력하게 되고 이때 소수 첫째 자리에서 반올림이 발생하여 1이 출력됩니다.

정리

코드의 큰따옴표(" ") 안에서 출력에 어떠한 효과를 주는 문자를 제어문자라고 합니다. 예시: printf("\n") 

코드의 큰따옴표(" ")내부의 ‘%d‘는 그대로 출력되지 않으며 ‘%d’는 큰따옴표(" ")다음에 있는 값(상수나 변수)의 출력 서식을 정해주는 역활을 하는 서식 지정자입니다.예시: printf("%d", a)숫자 출력, printf("%c", a)문자 출력

서식 지정자 가운데에 특정한 숫자를 붙일경우 서식이 다르게 출력됩니다. 예시: %5d, %3.2f
앞에 붙는 숫자는 오른쪽 정렬을 위한 숫자 입니다.(띄어쓰기와 동일) 소수 자리 붙는 숫자는 0.2 만큼 이라 했을때 소수 셋째 자리에서 반올림 하여 둘째 자리 까지만 출력하는 숫자 입니다.예시 printf(%[폭].[정밀도]서식지정자)

다음 토픽에서는 scanf( )(입력)에 대해서 배워 봅시다.

 

댓글

댓글 본문
  1. life knowledge
    수정했습니다.^^
    대화보기
    • Noir
      두번째 코드에 7번째 줄 printf("%3.1f\n",b); 에서 %가 생략 되어있네요
    • Noir
      잘 봤습니다. 첫번째 코드에 5번째 줄 맨 뒤 슬레쉬 없애야될거 같아요
    • life knowledge
      수정했습니다. ^^
      대화보기
      • dbsgmltka5@naver.com
        'printf()함수의 서식 변경'에서 오타가 있네요!
        7행에 3.1f라 되어있는데 아래 설명글에는 %3.1f라해서 알았네요
      • life knowledge
        수정했습니다. ^^
        대화보기
        • Adera
          감사합니다
          그런데 printf() 함수의 활용 예시문에서 6행의 ("n") 부분이 잘못된것 같습니다. ("\n")인것 같습니다.
        버전 관리
        life knowledge
        현재 버전
        선택 버전
        graphittie 자세히 보기