• 2022. 4. 18.

    by. 데브촙

    반응형

    운영체제별로 화면에 문자를 출력하는 과정과 방법이 다르다.

    만약 C언어가 문자 출력 기능을 문법으로 제공한다면, 환경이 변화했을 때 이를 수용하기 위해 C언어 문법(컴파일러의 소스 코드 변경하는 것)까지 변경해야하는 문제가 발생한다.

     

    C언어는 시스템에 영향을 받는 요소들은 고정된 문법으로 제공하지 않는다.

    C언어는 자신의 기능을 확장하기 위해 함수라는 개념을 제공하고 있음, 하지만 프로그래머가 직접 문자 출력 함수를 만드는 것은 어려운 일임.

     

    그래서, C 언어 표준 함수를 구현함.

    C 언어 컴파일러를 만든 회사에서 운영체제별로 다양한 기능을 구현하여 제공하는 함수.

    C 언어 표준 함수들이 정의된 .lib가 정의된 C 표준 라이브러리를 사용하면 된다.

     

     

    표준 출력함수

    표준 출력이란 해당 시스템이 가장 기본으로 사용하는 출력 방식을 말한다.

    프로그래머가 프로그램을 만들 때 해당 시스템에서 표준인 출력 방식 중 하나를 선택하여 원하는 정보를 전달할 수 있다

    // putchar, putc : 단일 문자 출력 함수
    
    putchar(65); /*아스키 값 65에 해당하는 문자 A가 출력*/
    putchar(‘A’); /*문자 A가 출력*/
    
    
    // puts : 문자열 출력 함수
    
    puts(“Hello”); /*Hello 출력 후에 줄 바꿈(개행) 발생*/

     

    printf [print + format = printf]

    표준 출력함수 중에서 가장 많이 사용하는 함수

    형식화된 문자열을 출력할 수 있다.

    % 서식 지정 키워드를 사용하여 변수 값을 일정한 형식으로 출력할 수 있다.

    대표 키워드로는 %d(10진수 정수), %f(실수), %c(문자), %s(문자열)이 있다.

     

    printf 함수 사용법

    int data = 5;
    printf(“%d”, data);  /* data 변수에 저장된 5라는 정수를 출력*/
    
    
    int data1 = 3;
    int data2 = 6;
    printf(“%d %d”, data1, data2);  /* data1, data2 변수에 저장된 정수를 출력*/
    
    
    
    // % 키워드 중심의 출력 특성 확인하기
    
    printf(“65의 ASCII 값은 %c입니다.”, 65); 
    /*출력결과: 65의 ASCCII 값은 A입니다.*/
    
    char data3 = 65;
    
    //첫 번째 data는 %c와 짝이되고 두 번째 data는 %d와 짝을 이룸
    printf(“%c의 ASCII 값은 %d입니다.”, data3, data3);
    /*출력결과: A의 ASCCII 값은 65입니다.*/
    float value = 2.3f;
    printf(“%f”, value);    /*출력 결과 : 2.3000000*/
    
    
    float value2 = 2.3f;
    
    /* value 변수 값을 실수 형식과 정수 형식으로 출력함 */
    printf(“%f, %d”, value2, value2);
    /*출력 결과 : 2.3000000,  -107374182
     실수 데이터를 정수 표현 키워드인 %d로 출력하면 엉뚱한 값(0xC0000000)이 출력된다. */
    char data = -1;
    printf(“%d, %u”, data, data);
    // 예상 출력결과: -1, 255
    // 실제 출력결과: -1, 4294967295
    
    // 예상이 빗나간 이유는?
    // %d 또는 %u가 4바이트(32비트) 크기의 정수 기반으로 값을 출력하기 때문이다.
    int data1= 10; /* 10진수 -> 10진수로 10 */
    int data2= 010; /* 8진수 -> 10진수로 8 */
    int data3= 0x10; /* 16진수 -> 10진수로 16 */
    
    /*data1은 16진수, data2는 10진수, data3은 8진수로 출력*/
    printf(“%x, %d, %o”, data1, data2, data3);
    // 출력 결과 : a, 8, 20
    
    
    
    
    float data = 12.34;
    printf(“%f, %e, %E”, data, data, data);
    // 출력 결과: 12.340000, 1.234000e+01, 1.234000E+01

     

    출력 칸수 조절하기

    int data = 7;
    /* 자릿수 확인을 위해 [] 문자를 사용함 */
    printf(‘[%d] [%5d]“, data, data);
    // 출력 결과 : [7] [    7]
    //                4개의 공백

    오른쪽 정렬과 왼쪽 정렬

     

    출력 문자열 정렬 이유?

    단순히 이쁘게 하려고? 아니죠!

    직관적으로 큰값인지 작은값인지 알기 위해. 출력할 문자의 개수보다 칸을 더 사용하여 출력하면 빈칸과 숫자가 마치 그래프처럼 표시되어 값을 정확히 확인하지 않고도 어느 정도 범위에 있는 값인지 알 수 있다.

    int data = 7;
    /* 자릿수 확인을 위해 [] 문자를 사용함 */
    printf(‘[%5d] [%05d] [%-5d]“, data, data, data);
    // 출력 결과 :  [    7]   [00007]    [7    ]
    //           오른쪽정렬  공백대신0  왼쪽정렬

     

    실수의 소수점 자릿수 지정하기

    . 마침표를 사용하여 출력할 소수점 이하 자릿수를 지정할 수 있다.
     % 전체 칸수 . 소수점 자리수 f
    
    
    double data = 3.141592;
    /* 자릿수를 확인하기 위해 [] 문자를 사용함 */
    printf(“[%f] [%.4f] [8.4f] [%-8.4f]”, data, data, data, data);
    // 출력 결과 : [3.141592] [3.1416] [  3.1416] [3.1416  ]

     

    % 자체를 출력하고 싶다면 ??

    printf(“90%%”); // 90%

     

     

    제어 코드 사용하기

    ASCII 표에는 소리를 내거나 콘솔의 출력과 입력의 현재 위치를 알려주는 캐럿(Caret, 문자로 깜빡임) 위치를 변경할 수 있는 제어코드가 있다.

    제어 코드는 키보드에 있는 문자가 아니기 때문에 제어코드를 직접 입력할 수 없으며, C언어는 \(백슬래시)와 키워드로 제어코드를 사용할 수 있는 문법을 제공한다.

     

     

    반응형

    'C' 카테고리의 다른 글

    연산자  (0) 2022.04.20
    전처리기(Preprocessor)  (0) 2022.04.17
    lib 파일, 라이브러리  (0) 2022.04.15