본문 바로가기

국비과정

[ANDROID 국비과정] 2023.01.03 - 안드로이드 앱개발자 과정

C언어



printf()

화면에 데이터를 출력해주는 함수.


printf("출력 data");

printf("")을 이용해, 큰 따옴표("")안쪽에 문자를 넣으면 그대로 출력해준다. 하지만 몇가지 출력이 안되는 문자는 아래와 같다.

_ % , \ , "_

아래와 같이 코드를 작성해서 출력할 때, 줄바꿈은 되지 않는다. 생각해보면 간단하다. 그렇다면 줄바꿈을 하기 위해서는 어떤 방식이 필요할까?

void main() {
printf("aaa");
printf("bbb");
}

줄바꿈을 해줄 수 있는 명령어를 컴퓨터에게 전달해야한다. 위의 코드를 다음과 같이 바꿔보자.

void main() {
printf("aaa\n");
printf("bbb");
}

\를 활용하면 줄바꿈, 탭간격 등 특수문자를 활용할 수 있으며, 출력되지 않는 문자들을 출력시킬 수 있다.


printf("출력서식",출력 data);

출력서식에는 문자와 숫자 모두 들어갈 수 있다. 그래서 출력 data 의 타입을 구분해주어야 한다.

*출력데이터의 타입 4가지 *

  1. 정수 : 10,20,-30 . . .

  2. 실수 : 3.14,555,-80,10.0 . . . -> 10과 10.0은 다른숫자!

    1. 한문자 : 'A','a','!' . . .

    *** C언어에서 아스키코드를 바탕으로 만들어졌기 때문에, 한글과 같은 문자는 출력 data로 사용할 수 없다.

    1. 문자열 : "String", "이기리","!@#$%" . . .

    그렇다면 타입을 구분하기 위해서는 어떠한 방식이 필요할까? -> %를 이용하자!

    printf("안녕하세요 %s 입니다.","홍길동");

    서식문자 %s를 활용하여 "홍길동" 이라는 출력 data 를 가져올 수 있었다. 아까 말했듯, 출력 data 의 타입을 구분해주기 위해서 서식문자를 활용해야 하는데, 나머지 서식문자들에는 어떤것들이 있을까?

    서식문자의 종류
    %d : 정수 서식문자
    %x : 16진수 서식문자
    %o : 8진수 서식문자
    +이진수를 표현해주는 서식문자는 없다.
    %i : 정수 서식문자 (16진수와 8진수의 등장으로인해 좀 더 명확히 표현해줄수 있는 %d가 주로 사용된다.)
    %f : 실수 서식문자
    %c : 한글자 서식문자
    %s : 문자열 서식문자


서식문자의 필요성

예를 들어, 컴퓨터에게 3+5 의 연산을 시켜서 화면에 출력해주는 작업을 시키고 싶다고 해보자.
그러면 printf("출력data");를 이용한다면, 이러한 작업이 쉽지 않음이 예상된다.

만일, printf("출력서식",출력 data); 를 이용한다면 좀 더 편리하게 작업이 가능하다.
다음과 같이 작성하면 된다.

printf("덧셈결과 : %d",3+5);

이것만으로도 서식문자의 필요성은 충분해보인다.


서식문자가 없거나, 출력 data 가 없다면?

다음 두가지 코드를 확인해보자.

printf("덧셈결과: 입니다",8); -> 8은 사라지고, 출력서식만 출력된다.
printf("덧셈결과: %d 입니다"); -> 쓰레기값이 들어와 출력된다.

두 개 이상의 서식문자

컴퓨터에게 두가지 이상의 연산을 시켜서 출력을 시켜주고 싶다고 해보자. 다음과 같이 코드를 작성하자.

printf("덧셈결과 : %d 이고, 뺄셈결과 : %d 입니다",3+5,6-3);

필드폭과 소수점 자리 지정

printf("[%10d]\n", 1234); 결과 : [      1234]
printf("[%-10d]\n", 1234); 결과 : [1234      ]
printf("[%010d]\n", 1234); 결과 : [0000001234]
printf("[%10.2f]\n", 0.123456); 결과 : [      0.12]

아스키코드와 %c

printf("%c \n", 'A'); 결과 : A
printf("%c \n", 97); 결과 : a
printf("%d \n", 'A'); 결과 : 65
printf("%d \n", 'A' + 32); 결과 : 97
printf("%c \n", 'A' + 32); 결과 : a

출력데이터의 진수 표현

printf("%d \n", 237); 10진수
printf("%d \n", 0237); 8진수
printf("%d \n", 0x237); 16진수