본문 바로가기

BackEnd/C

scanf함수를 이용한 정수와 실수의 입력

반응형

scanf 함수    


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int main(void)
{
    int n1;
    double n2;
 
    printf("정수 입력: ");
    scanf("%d"&n1);
 
    printf("실수 입력: ");
    scanf("%lf"&n2);
 
    printf("입력된 두 개의 데이터: %d, %f \n", n1, n2);
 
    return 0;
}
cs


1) scanf 함수에 대해


scanf함수의 %d는 키보드로부터 입력하는 값을 10진수 정수 int형으로 해석하겠다는 의미이다. 


그리고 int형 변수 n1에 저장한다.


int형 데이터의 입력은 %d, 출력은 %d 이다.


double형 데이터의 입력은 %lf, 출력은 %f 이다.



2) scanf 함수와 printf함수의 비교



printf 함수를 호출할때는 int형 정수 데이터가 전달되어야 한다.


하지만 scanf 함수를 호출할 때에는 입력 받은 값을 저장할 변수의 이름 앞에 기호 &를 붙여준다.


변수의 이름 앞에 단항연산자 &를 붙이면 해당 변수의 주소값을 얻게 된다.


즉 scanf 함수를 호출할 때에는 int형 변수의 주소 값을 전달해줘야한다.


3) scanf 함수로 둘 이상의 데이터 입력 받기


scanf함수 호출시 전달하는 문자열 안에는 서식문자를 둘 이상 지정할 수 있다.


7행에서는 문자열에 공백이 있지만, 11행에서는 문자열에 공백이 없다.


이 공백은 아무런 의미가 없다.


하지만 입력할때는 스페이스,탭,엔터등의 공백을 주어 3개의 정수를 입력해줘야 한다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int main(void)
{
    int n1, n2, n3;
    double d1, d2, d3;
 
    printf("세 개의 정수 입력: ");
    scanf("%d %d %d"&n1, &n2, &n3);//총 3개의 정수를 입력받는것 
    printf("입력된 정수 출력: %d, %d, %d \n\n", n1, n2, n3);
    
    printf("세 개의 정수 입력: ");
    scanf("%d%d%d"&n1, &n2, &n3);//공백없이도 3개 정수 입력받는것 
    printf("입력된 정수 출력: %d, %d, %d \n\n", n1, n2, n3);
 
    printf("세 개의 실수 입력: ");
    scanf("%lf %lf %lf"&d1, &d2, &d3);//총 3개의 실수를 입력받는것 
    printf("입력된 실수 출력: %f, %f, %f \n\n", d1, d2, d3);
 
    return 0;
}
cs



4) 데이터의 입력 구분을 위해 공백 이외의 문자 사용


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int main(void)
{
    int n1, n2;
    double d1, d2;
 
    printf("정수 | 정수: ");
    scanf("%d | %d"&n1, &n2);
    printf("입력 데이터 출력: %d, %d \n\n", n1, n2);
 
    printf("실수 / 실수: "); 
    scanf("%lf / %lf"&d1, &d2);
    printf("입력 데이터 출력: %f, %f \n\n", d1, d2);
 
    return 0;
}
cs


7행에서 %d와 %d사이에 문자 | 가 삽입되었다.


따라서 이 경우에는 두개의 정수를 입력할때, 두 정수 사이에 반드시 | 문자가 삽입되어야 한다. 


반응형

'BackEnd > C' 카테고리의 다른 글

삼항 연산자  (0) 2019.03.03
if~else문  (0) 2019.03.03
함수와 관련된 기타 내용들  (0) 2019.02.26
함수의 선언과 정의  (0) 2019.02.26
다양한 함수의 예  (0) 2018.12.18