티스토리 뷰

Language/C 언어

printf(), scanf()

데브훈96 2020. 2. 5. 21:08

안녕하세요, IT디자이너입니다.

 

이번 포스팅에서는 C언어의 표준 라이브러리에서 사용하는 기본 입, 출력 함수를 소개해드리겠습니다.

 

printf() 와 scanf는 무언가를 프린트하고 스캔 하는 느낌의 의미로 생각하실 수 있을 것입니다. 네, 맞습니다.

 

말 그대로 우리가 우리가 입력한 값을 스캔하고 우리가 출력하고 싶은 값을 프린트하는 것입니다.  하지만,

 

도구는 역시 사용하는 방법을 알아야 유용하겠죠?

 

1. printf();

printf()는 문자열을 출력하거나 서식문자를 통해서 여러가지 원하는 값을 출력할 수 있습니다. 

 

 

printf("안녕하세요, IT디자이너 입니다.");

 

 

또는

 

 

int num = 10;

printf("%d",num);

 

 

이렇게 서식문자를 통해서 문자열 뿐만 아니라 정수또한 출력이 가능합니다. 

 

하지만 서식문자는 꼭 정수뿐만 있는게 아니겠죠?

 

C언어 서식문자 종류

 

이렇게 8진수, 16진수를 출력하기 위한 서식문자 또한 있습니다. 

 

또한 printf()는 우리가 사용하는 IDE 콘솔에 출력을 하기위한 함수이기 때문에 변수 초기화 또는 연산에서는 사용이 불가능한 함수입니다.

 

여러가지 변수나 데이터를 한번에 출력 또한 가능합니다. 

 

printf("%d %d %c",1, 2, 'A');

 

 

아! 그리고 한가지 더 설명드리고자 합니다. 프로그래밍을 배우다 보면은 "아스키 코드"라는 말을 한번쯤은 들어보셨을 겁니다. 

 

즉, 우리가 입력하는 문자는 컴퓨터는 이해할 수 없기 때문에, 우리가 입력한 값을 컴퓨터는 아스키 코드를 확인하고 문자를 숫자로 변환하여 이해하게 됩니다. 

 

정수형 서식 지정자를 통한 문자 출력 

사진을 보시게 되면은 대문자 A를 정수형 서식지정자를 통해 출력된 것을 볼수 있을것입니다. 

 

즉 컴퓨터는 A가 아닌 65로 이해하여 값을 처리한것입니다. !!!!

2. scanf()

출력을 하였으니 이제는 입력을 해봐야겠죠? 입력에 사용하는 함수는 바로 "scanf()"입니다.

 

scanf() 함수는 printf() 함수와 달리 변수가 필요합니다. 변수에 따라서 서식문자를 달리하여 입력을 받아야하는데요

 

 

int num;

scanf("%d",&num);

 

 

이러한 방법으로 입력을 받습니다. 근데 하나 이상한게 있죠? 바로 "&" 입니다. &은 "주소 연산자"입니다. 즉 해당 변수가 가리키는 메모리의 주소를 뜻합니다.!

 

해당 변수의 주소에 직접 내가 키보드로 입력한 값을 넣겠다! 라는 의미입니다. 

 

하지만!, 문자열을 입력할 때는 방법이 다릅니다. 

 

 

char arr[5];

scanf("%s",arr);

 

 

문자열 입력 시, char 데이터 타입의 배열을 선언하고 "&" 주소연산자를 붙이지 않고 배열 변수 그대로 매개변수로 사용합니다.

 

그 이유는 배열 변수 이름 자체는 그 변수가 가리키는 메모리의 주소를 반환합니다. 

 

배열의 변수의 이름이 주소를 메모리 주소를 반환합니다.

그렇기 때문에 별도로 "주소 연산자"를 사용하지 않고 입력을 받을 수 있습니다. 이 부분은 C언어를 공부할 때 "포인터" 챕터에서 설명드리도록 하겠습니다.

 

또한 scanf()는 여러개의 변수를 한번에 입력 받을 수 있습니다. 

 

int num1;

int num2;

scanf("%d %d",&num1, &num2);

 

scanf는 스페이스바, 텝(tap), Enter 를 기준으로 입력값을 구분하기 때문에 스페이스바 또는 엔터를 입력하여 여러가지 변수를 입력할 수 있습니다. !

 

 

자! C언어를 입문하실 때 사용하는 기본적인 입,출력 함수에 대해서는 설명을 다 하였습니다.~~

혹시 scanf()를 사용하실 때 불편했던 점인 스페이스바가 있는 문자열 입력이 불가능하다고 생각하실겁니다.!!!!! 

 

이 점을 생각하셨다면은 꼭! 구글에 검색을 통해서 해결방법을 찾아보시는 것도 프로그래밍 능력 그리고 검색 능력을 키울 수 있는 방법중 하나입니다.!!!

 

이상 scanf(),printf() 포스팅을 마치도록하겠습니다.!

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG more
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함