2023.01.03 - 안드로이드 앱개발자 과정

CHA·2023년 1월 3일
0

C언어

printf()

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은 다른숫자!
  3. 한문자 : 'A','a','!' . . .
    *** C언어에서 아스키코드를 바탕으로 만들어졌기 때문에, 한글과 같은 문자는 출력 data로 사용할 수 없다.
  4. 문자열 : "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진수
profile
Developer

0개의 댓글