표준입출력함수
표준출력함수
- printf(): 화면에 여러 종류의 자료를 출력 (모든 자료 형태 가능)
- putchar(): 화면에 문자 1개 출력
- puts(): 화면에 문자열 출력
표준입력함수
- scanf(): 키보드를 통해 여러 종류의 자료를 입력받음
- getchar(): 키보드를 통해 문자 1개 입력받음
- gets(): 키보드를 통해 문자열 입력받음
printf()
- 기능: 주어진 출력 양식으로 자료 출력
- 형식:
printf("출력 형태", 변수1, 변수2, ...);
- 사용 예
int a = 1;
int b = 2;
printf("a = %d, b =%d", a, b);
a= 1, b=2
scanf()
- 기능: 주어진 양식으로 자료를 입력받아 저장된 기억공간(변수)에 저장
- 형식:
scanf("입력 양식", &변수1, &변수2, ...);
- 사용 예
char c;
char d;
printf("문자를 입력하시오: ");
scanf("%c %c", &c, &d);
printf("c = %c, d = %c", c, d);
문자를 입력하시오:
k j 입력 후 엔터
c = k, d = j
-
scanf() 함수 사용 시 참고사항
- 변수 앞에 주소를 의미하는
&
를 붙여야 한다. - scanf() 함수 입력 양식에 “%문자”가 아닌 다른 문자가 들어가면 안 된다. (예 -
scanf("a = %d", &a);
안됨) - 하나 이상의 자료를 한번에 입력할 수 있는데, 각 자료 구분은 공백으로 한다. 입력할 때도 공백으로 구분해준다.
-
Visual Studio에서는 scanf()와 몇몇 함수를 권장하지 않는 함수로 지정하고 해당 함수가 포함된 소스 코드를 컴파일하지 않는다. 따라서 scanf()를 사용하기 위해서 아래 코드를 도입부에 포함해야만 컴파일이 진행된다.
#pragma warning(disable:4996)
- 변수 앞에 주소를 의미하는
getchar()
- 기능: 한 문자를 키보드를 통해 입력받음
- 형식:
getchar();
- 사용 예
char e;
printf("문자 하나를 입력하시오: ");
e = getchar();
printf("e = %c", e);
문자 하나를 입력하시오:
E 입력 후 엔터
e = E
putchar()
- 기능: 한 문자를 화면에 출력
- 형식: `putchar(‘문자’);
- 사용 예
char f='A';
putchar(f);
putchar(f+1);
putchar('\n');
putchar('B');
putchar('B'+2);
AB
BD
문자 ‘A’는 ASCII 코드로 변환하면 정수 65에 해당한다. 65에 1을 더해주면 66인데, 역으로 변환하면 문자 ‘B’다. 따라서 ‘AB’가 출력된다.
개행문자 \n
으로 줄바꿈 후 ‘B’를 출력하고 이어서 2를 더해주므로 마찬가지 원리로 ‘D’가 다음으로 출력된다.
-
putchar() 함수 사용 시 참고사항
- 함수 인자로 들어갈 수 있는 문자는 정수형 변수, 정수형 상수, 문자형 변수, 문자, 수식
gets()
- 기능: 문자열을 키보드로부터 입력받음
- 형식:
gets(변수)
- 사용 예
char g[10];
printf("문자열을 입력하시오: ");
gets(g);
printf("g = %s", g);
문자열을 입력하시오:
abcd efg 입력 후 엔터
g = abcd efg
- scanf() 함수와 차이점
char g[10];
printf("문자열을 입력하시오: ");
scanf("%s", g);
printf("g = %s", g);
문자열을 입력하시오:
abcd efg 입력 후 엔터
g = abcd
scanf() 함수는 공백으로 데이터를 구분하기 때문에 변수 1개만 선언된 상태에서는 첫 번째 데이터(abcd)만 저장한다.
puts()
- 기능: 문자열을 화면에 출력한다.
- 형식:
puts(변수)
- 사용 예
char s1[10] = "Computer";
char s2[10] = "Science";
puts(s1);
puts(s2);
Computer
Science
- printf() 함수와 차이점
char s1[10] = "Computer";
char s2[10] = "Science";
printf("%s", s1);
printf("%s", s2);
ComputerScience
C언어에서는 문자열 끝에 무조건 null 문자 \0
을 출력하는데, puts() 함수는 null 문자를 개행문자 \n
으로 바꿔서 출력한다. 따라서 개행문자를 따로 써주지 않아도 줄바꿈이 된다.
반면에 printf() 함수는 개행문자를 써주지 않으면 줄바꿈이 되지 않으므로 옆에 붙어서 출력된다.