ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [C Language] 5. 입출력 함수(I/O Function) - C 언어
    CSE/C Language 2015. 6. 13. 10:04

    1. 입출력 함수의 개요
     - 키보드로 입력을 받거나 화면에 출력을 해주는 함수를 통틀어 입출력 함수라 한다.(파일에 읽기 쓰기도 입출력)


    2. printf()
     - 표준 출력 함수 중에서 가장 많이 사용되는 함수이다. 
     - 문자, 숫자, 문자열, 부동 소수 등 다양한 형태로 출력 가능하다.
     
     'printf()의 형식'


     printf("서식 문자열", 인자1, 인자2, ...);





    printf()는 크게 서식 문자열과 인자의 조합으로 사용 가능하며, 서식 문자열은 항상 큰따옴표로 감싸주어야 한다. 


     '변환 형식 문자가 없는 경우'
      1. printf("I'm a rich");
      2. printf("I'm a boy.\n Yor are a girl");


     '변환 형식 문자가 있는 경우'
      1. printf("Age: %d\n", age);

     컴파일러는 '%' 기호를 만나는 순간 변환 형식 문자로 간주하여, 바로 다음에 이어지는 문자에 따라서 다양한 형식을 출력한다.
     
     컴파일러가 인식하는 변환 형식 문자는 아래와 같다.



      

     변환 형식 문자

    변환 형식 내용 

    출력하려는 데이터 형 

    %d 

    인자의 값을 10 진수로 출력

    printf("%d", 100);     // 100 출력 

    int 

    %c

    인자의 값을 참조하여 문자 하나를 출력

    printf("%c", u);     // u 출력

    printf("%c", imsi);     // ASCII 문자 출력

    char 

    %s

    NULL 문자를 만날 때까지 인자의 값을 출력

    printf("%s", "Rich");   

    printf("%s", imsi);     // imsi 가 가리키는

                            // 문자열 출력 

    문자열 포인터 변수,

    문자열 상수 

    %x, %X

    인자의 값을 16진수로 출력

    printf("%x", 100);     // 64

    int 

    %f

    인자의 값을 부동소수로 출력

    printf("%f", 100);     // 100.000000

    printf("%f", 0.5);     // 0.500000

     float, double

     




     이 밖에도 %u, %g, %e 등 다양하게 존재하지만 위 문자만 확실히 알아도 작성시 큰 문제가 없다.


     '서식 지정 문자'
      - 변환 형식 문자는 인자의 값을 데이터 형에 따라 출력만 해줄 뿐 출력의 '모양'을 결정하지는 않는다.


      

     %[flag][width][.prec][F|N|h|l]type




      - flag: '-', '+', ' ', '#' 등이 있으며, 숫자에 음수기호나 주소를 표시하는 역할을 한다.
      - width: 출력의 폭을 지정한다.
      - prec: 출력되는 값의 정밀도를 지정한다. 부동 소수에서 주로 사용
      - F, N, h, l: 입력 크기 지정자라고 한다.
      - type: 변환 형식 문자를 지정한다.


     아래 예제를 통해 간단히 살펴보자.


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    /*
     * format.c
     *
     *  Created on: 2015. 5. 11.
     *      Author: root
     */
     
    #include <stdio.h>
     
    int main(void) {
     
        char * name[] = {"Jung""Park""Kim"};
        int grade[3= {241731};
     
        printf("%s %s %s\n", name[0], name[1], name[2]);
        printf("%d %d %d\n", grade[0], grade[1], grade[2]);
        puts("");
        printf("%7s %7s %7s\n", name[0], name[1], name[2]);
        printf("%7d %7d %7d\n", grade[0], grade[1], grade[2]);
     
        return 0;
    }
    cs




     결과는 아래와 같다.










    3. scanf()
     - 표준 출력과 대응되는 함수로 표준 입력 기능을 맡는다.
     - 문자열 입력받을 때는 자제해야 한다.

     아래의 나이를 입력받아서 살아온 날 수를 출력하는 예제를 통해 보도록 하자.





    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    /*
     * scanf.c
     *
     *  Created on: 2015. 5. 11.
     *      Author: root
     */
     
    #include <stdio.h>
     
    int main(void) {
     
        int age;
     
        printf("How old are you?? ");
        scanf("%d", &age);
     
        printf("%d", age * 365);
     
        return 0;
    }
    cs




















     scanf()에서 주의할 점은 printf()와 비슷하나, 항상 인자의 앞에 & 기호를 잊지 말아야 한다.

     또한 scanf()의 문자 입력시 주의할 점도 있다.

     아래 예제를 통해 보도록 하자.



    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    /*
     * scanf2.c
     *
     *  Created on: 2015. 5. 11.
     *      Author: root
     */
     
    #include <stdio.h>
     
    int main(void) {
     
        char one, two;
     
        printf("Input two characters: ");
        scanf("%c%c", &one, &two);
        printf("%c %c\n", one, two);
     
        printf("Input two characters: ");
        scanf("%c %c", &one, &two);
        printf("%c %c\n", one, two);
     
        return 0;
    }
    cs






     두 예제는 얼추 보면 비슷해 보이나, scanf() 부분에서 
     위에선 %c%c 로 붙였고,
     아래에선 %c %c로 한칸 여백을 두었다.

     실행결과를 통해 비교해보자.









     


    * Programming in C 서적을 참고하여 작성하였습니다



    댓글

Designed by Tistory.