C언어
printf()
화면에 데이터를 출력해주는 함수.
printf("출력 data");
printf("")을 이용해, 큰 따옴표("")안쪽에 문자를 넣으면 그대로 출력해준다. 하지만 몇가지 출력이 안되는 문자는 아래와 같다.
_ % , \ , "_
아래와 같이 코드를 작성해서 출력할 때, 줄바꿈은 되지 않는다. 생각해보면 간단하다. 그렇다면 줄바꿈을 하기 위해서는 어떤 방식이 필요할까?
void main() {
printf("aaa");
printf("bbb");
}
줄바꿈을 해줄 수 있는 명령어를 컴퓨터에게 전달해야한다. 위의 코드를 다음과 같이 바꿔보자.
void main() {
printf("aaa\n");
printf("bbb");
}
\를 활용하면 줄바꿈, 탭간격 등 특수문자를 활용할 수 있으며, 출력되지 않는 문자들을 출력시킬 수 있다.
printf("출력서식",출력 data);
출력서식에는 문자와 숫자 모두 들어갈 수 있다. 그래서 출력 data 의 타입을 구분해주어야 한다.
*출력데이터의 타입 4가지 *
정수 : 10,20,-30 . . .
실수 : 3.14,555,-80,10.0 . . . -> 10과 10.0은 다른숫자!
- 한문자 : 'A','a','!' . . .
*** C언어에서 아스키코드를 바탕으로 만들어졌기 때문에, 한글과 같은 문자는 출력 data로 사용할 수 없다.
- 문자열 : "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진수
'국비과정' 카테고리의 다른 글
[ANDROID 국비과정] 2023.01.06 - 안드로이드 앱개발자 과정 (0) | 2023.05.11 |
---|---|
[ANDROID 국비과정] 2023.01.05 - 안드로이드 앱개발자 과정 (0) | 2023.05.09 |
[ANDROID 국비과정] 2023.01.04 - 안드로이드 앱개발자 과정 (1) | 2023.05.08 |
[ANDROID 국비과정] 2023.01.02 - 안드로이드 앱개발자 과정 (1) | 2023.05.08 |
[ANDROID 국비과정] 2022.12.30 - 안드로이드 앱개발자 과정 (0) | 2023.05.08 |