본문 바로가기
Development/C

(C언어 기초) 4. 데이터 입력, scanf()

by eoieiie 2023. 8. 26.

키보드로부터 데이터를 입력받아 연산이 가능한 정수나 실수로 사용하려면 변환 과정이 필요하며, 이를 위해 scanf 함수를 사용합니다. 

scanf 함수의 사용법

 


간단합니다. 변수의 형태에 맞는 변환 문자를 입력하고 입력할 변수 앞에 &기호를 붙이면 됩니다. 예를 들어 int형 변수 a에 정수를 입력하는 방법은 다음과 같습니다. 변환 문자와 변수 사이는 콤마로 구분합니다. 

 

scanf("%d", &a);

 

예제를 살펴보도록 하겠습니다. 

 

#include <stdio.h>

int main(void)

{
    int a;

    scanf("%d", &a);
    printf("입력된 값 : %d\n", a);

    return 0;
}

 

키보드로 입력되는 문자는 모두 문자로 처리됩니다. scanf 함수는 변환 문자를 보고 정수로 변환할지 실수로 변환할지 아니면 그냥 문자열로 입력할지를 판단합니다. 변환 문자와 다른 예상치 못한 데이터가 입력되면 scanf함수는 변환을 포기하고 실행을 중단하며 변수에 존재하던 쓰레기 값이 그대로 출력됩니다. 

 

scanf 함수는 여러 개의 변환 문자를 나열하여 한 번에 2개 이상의 변수에 값을 입력할 수 있습니다. 예를 들어 int형 변수 a와 double 형 변수 b에 입력한다면 다음과 같습니다.

scanf("%d%lf", &a, &b);

 

각 변수의 형태에 맞는 변환 문자를 사용해야 합니다. 데이터를 입력할 때는 스페이스나 Tab, Enter를 눌러 공백으로 구분해야 합니다. 예제를 통해 살펴보겠습니다. 

 

#include <stdio.h>

int main(void)

{
    int age; // 나이는 정수형
    double height; // 키는 실수형

    printf("나이와 키를 입력하세요 : "); //입력 안내 메시지 출력
    scanf("%d%lf", &age, &height);
    printf("나이는 %d살, 키는 %.1lfcm 입니다.", age, height);

    return 0;
}

 

문자와 문자열의 입력


char 형 변수에 문자를 입력할 때는 키보드로 입력하는 모든 문자가 대상이 됩니다. 즉 스페이스나 엔터도 하나의 문자로 전달됩니다.  문자열은 char 배열에 %s 변환 문자를 사용하여 입력하는데, 문자열을 입력할 때는 배열명에 &호를 붙이지 않습니다. 예제를 통해 살펴보겠습니다. 

 

#include <stdio.h>

int main(void)

{
    char grade; //학점을 입력할 변수
    char name[20]; // 이름을 입력할 배열

    printf("학점 입력 : ");
    scanf("%c", &grade);
    printf("이름 입력 : ");
    scanf("%s", name); //%s는 &을 사용하지 않는다. 
    printf("%s의 학점은 %c입니다.\n",name, grade);

    return 0;
}


//실행결과

학점 입력 : A (엔터
이름 입력 : hwang (엔터
hwang의 학점은 A 입니다.

 

슬슬 변환 문자들이 많이 나와서 머리가 아파지네요. 정리하고 넘어가겠습니다. 

 

데이터 종류 자료형 크기  입력 변환 문자
정수 short 2 %hd
int 4 %d
long 4 %ld
long long 8 %lld
실수 float 4 %f
double 8 %lf
long double 8,10,12,16 %Lf
문자 char 1 %c
문자열 char 배열 기반적 %s

 

확인 문제


참고용 예제

#include <stdio.h>

int main(void)

{

    char fruit[20];
    int cnt;

    printf("좋아하는 과일 : ");
    scanf("%s", fruit);
    printf("몇 개 : ");
    scanf("%d" , &cnt);
    printf("%s를 %d개 드립니다.", fruit,cnt);

    return 0;
}

 

키보드로 문자를 입력하여 아스키 코드 값을 출력하는 프로그램을 작성하세요. 어떤 문자가 입력될지는 실행할 때 결정합니다. 

 

더보기
#include <stdio.h>

int main(void)

{
    char ch;

    printf("문자 입력 : ");
    scanf("%c", &ch);
    printf("%c문자의 아스키  코드 값은 %d입니다", ch, ch);

    return 0;
}


#실행결과

문자 입력 : a
a문자의 아스키  코드 값은 97

 

 

댓글