입출력 함수

코딩하는 기린·2022년 3월 1일
0

C

목록 보기
3/13

C에서 제공하는 대표적인 '표준 입출력 함수'는 '표준 입출력 라이브러리'인 'stdio.h'에 정의되어 있습니다. stdio는 'Standard Input Output'의 줄임말입니다.
그리고 여기서 입력과 출력에 사용되는 장치는 키보드와 모니터를 뜻 합니다.

자료의 입출력

printf()

'printf()'는 'print formatted'라는 뜻으로 '양식 지정 출력 함수'입니다.

printf("내용");의 기본 형태를 가지며, 내용 부분에는 앞서 살펴 보았던 escape 문자(출력 제어 문자)도 사용 가능합니다. 따라서 기본적으로 내용 출력 후 줄이 바뀌지않는 printf() 함수의 특성상

printf("첫 줄");
printf("둘째 줄");

이라는 코드가 있다면 출력값은

첫 줄둘째 줄

이 되지만, escape 문자 중 '\n(new line)'을 붙여주면

printf("첫 줄\n");
printf("둘째 줄");
첫 줄
둘째 줄

이렇게 바뀝니다.

내용 부분에는 변수도 출력할 수 있는데, a=1;이라는 변수를 출력하고 싶다면, printf("%d", a);의 형태로 a 값을 출력할 수 있으며, 출력값은 1이 됩니다.
여기서 '%d' 부분을 '출력 양식 변환 기호'라고 하며, 원하는 출력을 위해서는 변수의 자료형에 맞는 출력 양식 변환 기호를 사용해야합니다.

출력 양식 변환 기호 변수의 자료형 변환 형식
%d char, short int, int 부호있는 10진 정수
%ld long, int 부호 있는 10진 long 정수
%lld long long int 부호있는 10진 long long 정수
%u unsigned int 부호없는 10진 정수
%o unsigned int 부호없는 8진수
%x(%X) unsigned int 부호없는 16진수
%f float, double 10진 부동소수점 형식
%lf long double 10진 부동소수점 형식
%e(%E) float, double 지수 형태
%c char, short int, int 문자
%s char* 문자열
%p void* 포인터 주소값

만약 '%'가 출력하고싶다면 '%%'를 입력합니다.

printf()를 사용할 때는 변수의 자료형과 출력 양식 변환 기호에 유의해야합니다.

int a=65;
char c='B';
printf("%d %c\n", a, a);
printf("%d %c\n", c, c);

위와 같은 코드가 있다면 a라는 변수를 %d로 부호있는 10진 정수로 출력해서 '65', %c로 문자로 출력해서 'A'라는 결과 값이 나올 것입니다.
'A'가 출력되는 이유는 C는 ASCII 코드를 사용하므로 '65'라는 ASCII 코드값에 해당하는 'A'라는 문자를 출력하기 때문입니다.
따라서 마지막 줄의 코드는 '66 B'를 출력할 것 입니다.

65 A
66 B

printf()는 출력시 출력 폭이나 자릿수를 지정할 수 있습니다.

//n, m, i는 각각 자연수, j는 실수

printf("%nd", i);		//총 n 자리이며 오른쪽부터 채움
printf("%-nd", i);		//총 n 자리이며 왼쪽부터 채움
printf("%0nd", i);		//총 n 자리이며 오른쪽부터 채우고 공백은 0으로 채움
printf("%n.mf", j);		//총 n 자리(소수점 포함)이며 소수점 이하 m자리까지 출력
printf("%0n.mf", j);	//총 n 자리(소수점 포함)이며 소수점 이하 m자리까지 출력하고 공백은 0으로 채움

scanf()

'scanf()'는 '양식 지정 입력 함수'입니다.

scanf("출력 양식 변환 기호, ...", &변수명, ...);

위와 같은 형태로 사용하며 ""사이에는 출력 양식 변환 기호 외에는 사용하면 안됩니다.(입력을 여러개 받기위해 ','와 '공백'은 사용 가능) 그리고 변수명 앞에 '&(ampersand|주소 연산자)'를 꼭 붙여야하지만, 문자열이나 배열명은 그 자체가 주소의 의미를 가지므로 생략할 수 있습니다.

int a;
scanf("%d", &a);
printf("%d");

위와 같은 코드가 있을 때, 'a'에 scanf()로 사용자로부터 키보드로 값을 입력받아 그 값을 printf()로 출력합니다. 만약 '8'을 입력했다면 '8'이 출력됩니다.

문자 단위 입출력

getchar()

'getchar()' 함수는 문자 단위를 키보드로부터 입력받으며, 이 입력값은 정수나 문자여야합니다. 따라서 이를 입력받을 변수도 정수형이나 문자형이어야합니다.

char c;
c = getchar();

위와 같은 형태로 사용되며, 문자 입력 후 '엔터'를 눌러야 입력됩니다. 그리고 괄호안에는 아무것도 입력하지않습니다.

putchar()

'putchar()' 함수는 문자 단위를 모니터로 출력하며, getchar()와 달리 괄호안에 정수형 변수, 정수형 상수, 문자형 변수, 문자, 수식을 입력해 출력할 수 있습니다.

char c = 'g';
putchar(c);

위와 같은 형태로 사용됩니다.

문자열 단위 입출력

gets()

'gets()' 함수는 키보드로부터 문자열을 입력받으며, 입력받는 변수는 '배열명'이나 '포인터 변수'여야합니다. 이때 문자열은 공백을 포함하며 엔터를 입력하면 마지막에 '\0(null 문자)'가 입력됩니다.

char* s;
gets(s);

위와 같은 형태로 사용합니다.

puts()

'puts()' 함수는 문자열을 출력하며, 출력이 끝나면 자동으로 줄이 바뀌는데, 이는 '\0'를 만나면 '\n'으로 바꾸어 출력하기 때문입니다.

char* s = "giraffe";
puts(s);

위와 같은 형태로 사용합니다.

profile
Coding Giraffe.

0개의 댓글