일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- While
- ft_server
- libft
- 42
- python
- 구조체
- for
- 포인터
- 42Seoul
- jupyter 단축키
- nginx
- Class
- 함수
- Double
- 42cursus
- else if
- C언어
- float
- cout
- vs코드 단축키
- phpmyadmin
- 패킹
- docker
- 동적할당
- 42서울
- list
- iF
- 자료형
- C++
- 2차원배열
- Today
- Total
Developer
9.(C언어) scanf, 입력받기 본문
지금까지 printf로 원하는 것을 출력하는 것과 변수를 선언해 변수에 값을 할당하는 것을 해보았다. 그러면 프로그램이 동작중 일때 키보드로 입력한 값을 변수에 넣어서 사용할 수는 없을까?
scanf 함수를 사용하면 된다. printf함수로 콘솔에 출력하는 방식을 표준 출력(standard output)이라고 하고, 콘솔에서 입력을 하는 방식을 표준 입력(standard input, stdin) 이라고 한다. scanf 함수도 printf와 마찬가지로 stdio.h 헤더 파일에 선언이 되어있다. scanf는 다음과 같은 형태로 사용할 수 있다.
scanf(서식,변수의 주소);
#include<stdio.h>
int main(){
int num;
printf("입력하세요: ");
scanf("%d",&num);
printf("%d\n",num);
return 0;
}
3을 입력해서 그대로 입력받은 숫자를 출력하는 프로그램이다. scanf함수를 보면 변수앞에 &가 붙어있다. &는 주소값을 반환해 주는데 num의 주소를 확인해 입력된 값을 넣어준다고 생각하자.
scanf를 보면 printf와 크게 다르지 않다. 다만 두번째 인자에 그냥 변수를 넣어주는 것이 아니라 &를 작성해 주소를 넣어주는 것을 잊지말자.
만약 visual studio에서 위의 코드를 실행하면 error가 발생할 것이다. scanf의 경우 입력값의 길이를 설정할 수 없기 때문에 보안에 취약해 error가 발생하는 것인데 간단한 예제 수준만 진행해 볼테니 코드의 최 상단에
#define _CRT_SECURE_NO_WARNINGS를 작성해서 사용하자
#include<stdio.h>
int main(){
int num;
float fnum;
char ch;
printf("입력하세요: ");
scanf("%d %f %c",&num,&fnum,&ch);
printf("%d\n",num);
printf("%f\n",fnum);
printf("%c\n",ch);
return 0;
}
코드2 처럼 한번에 여러가지 자료형, 그리고 여러개를 한번에 입력 받을 수 있다.
printf에서 하던것 처럼 입력받을 갯수 만큼 서식 지정자를 작성해주고, 해당 값을 저장할 변수를 콤마로 구분해서 작성해주면된다. 이때 &를 추가 하는것을 잊지말자. 다만 printf와 다른점은 printf에서 double은 %f를 사용해 출력이 가능하지만 double형을 입력 받을 때에는 서식지정자로 %lf를 사용해야 한다.
실행 결과를 보면 두 가지 방법으로 입력을 받았는데 하나는 스페이스로 입력값을 구분하였고, 하나는 Enter로 입력값을 구분하였다. 공백을 기준으로 입력을 받으므로 두 가지 방법 모두 동일하게 동작하는 것을 볼 수 있다.
위에서 문자도 scanf를 통해 입력 받았는데 문자 하나를 입력받고, 하나를 출력하는 함수도 존재한다.
getchar(),putchar()
#include<stdio.h>
int main(){
char ch=getchar();
putchar(ch);
return 0;
}
getchar는 표준 입력에서 문자를 하나 입력받고, putchar는 표준 출력에 문자 하나를 출력해 주는 함수이다.
우리는 현재 콘솔로 실행하고 있는데 콘솔에서의 표준 입력은 키보드 입력이다.
따라서 getchar은 키보드로 입력된 하나의 문자를 처리하는 함수이다. 표준 출력은 화면에 보여주는 것 즉 콘솔창에 출력해 주는 것이다.
정리
1.scanf함수를 사용할때 변수 앞에 &를 작성하자
2.scanf함수로 double형을 입력받을 때에는 서식 지정자로 %lf를 사용하자
3.하나의 문자 입,출력은 getchar,putchar를 사용할 수 있다.
'Programming Language > C' 카테고리의 다른 글
11.(C언어) 형 변환 (0) | 2020.08.01 |
---|---|
10.(C언어) 연산, 연산자 (0) | 2020.08.01 |
8.(C언어) 상수 (0) | 2020.08.01 |
7.(C언어) 실수 자료형의 표현 방법_부동소수점 (0) | 2020.08.01 |
6.(C언어) 진법, 음수표현 (0) | 2020.08.01 |