본문 바로가기
프로그래밍/C

데이터 입력

by 길냥이 2025. 4. 15.
728x90

목차

  1. 입력의 scanf 함수

 

1. 입력의 scanf 함수

키보드에 타이핑하는 모든 내용은 문자로 저장됩니다.

 

뭐, 그래서 입력받은 데이터를 여러모로 바꾸는 과정이 필요해요. 

이때 필요한 것이 scanf(스켄에프)함수입니다. (scanformatted)인데..

이 scanf 함수가 데이터를 바꾸는 데 사용하는 변환 문자는 printf 함수에서 사용하는 변환 문자와 거의 동일합니다.

 

대충 구조는 이렇게 생겼어요.

scanf("변환 문자", &받을 변수명);

 

예를 들어 123을 받으려면, scanf("%d", &a); 같이 쓰면 됩니다.

 

여담으로 scanf함수같이 메모리에 직접 접근하는 함수를 사용하면 VSC에서는 오류가 납니다. 

해결방법으로는 scanf_s를 사용하거나, 프로그램의 맨 위에 #define _CRT_SECURE_NO_WARNINGS 를 입력하면 되요.

개인적으로는 후자를 추천해요. 전자는 다른곳에서는 못 쓰는지라..

 

일단, 한번 프로그래밍해보죠.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main()
{
    int input = 0;
    scanf("%d", &input);                //변수 input에 정수값 입력받음
    printf("입력된 값 : %d",input);     //입력받은 값 출력

    return 0;
}

자, 출력은 어떻게 될까요.

몰라요, scanf는 출력을 입력에 따르는지라, 우리가 입력한 정수값이 나올겁니다.

 

아무튼 이런 프로그램을 실행하면 cmd(명령 프롬포트)가 멈춰있는데, 이 상황에 아무 숫자(123)같은걸 입력하면 출력이 나옵니다.

지금같은경우에는..

입력된 값 : 123

이 나오겠네요.

 

scanf를 사용할 때 몇 가지 유의점이 있는데, 저 위에 오류뿐만 아니라..

 

1. 변수명을 받을 때 &가 필요하고

(다만 문자열의 경우에는 &을 사용하지 않아요. 문자열은 문자의 배열이기 때문에, 배열이 이미 참조되어 있기 때문.. 이지만 어려우면 그냥 문자열은 안 쓴다고 외우세요)

 

2. 변환 문자와 맞는 데이터를 입력해야 해요.

안 그러면 터집니다.

 

당연하게도 scanf 함수도 printf 함수처럼 한번에 여러가지 변환문자를 받을 수 있어요.

메커니즘은 printf함수와 동일합니다.

 

그럼, 한번 여러가지 scanf 함수를 사용해보죠.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main()
{
    char grade = '0';  //학점을 입력할 변수
    int stats = 0;     //성적을 입력할 변수
    char name[20];     //이름을 입력할 배열
    
    printf("학점과 성적을 입력하세요 :"); 
    scanf("%c %d",&grade, &stats);   //각 변수에 성적과 학점 입력
    printf("이름을 입력하세요 : ");
    scanf("%s", name);               //배열에 이름 입력, &을 사용하지 않음.
    
    printf("%s의 성적 : %d, 학점 : %c", name, stats, grade);

    return 0;
}

자. 한번 해봅시다.

 

입력과 출력을 받으면..

학점과 성적을 입력하세요 :A 100
이름을 입력하세요 : 홍길동
홍길동의 성적 : 100, 학점 : A

빨간색이 입력입니다. 초록색이 출력이고요.

사실 검은색도 출력이긴 한데..

 

scanf 함수를 사용하려면 약간의 귀찮은 일이 있는데, 띄어쓰기와 엔터키를 조심해야한다는겁니다.

물론 웬만한 경우는 문제없는데, 저렇게 scanf 함수 안에 %d와 %d가 붙어 있을 경우에는 띄어쓰기로 분류하기 때문에..

뭐, 자세한건 나중에 배우고, 조심 좀 하시면 됩니다.

 

 

728x90

'프로그래밍 > C' 카테고리의 다른 글

그 외 연산자  (0) 2025.04.16
기본 연산자  (0) 2025.04.15
변수  (0) 2025.04.14
상수와 데이터 표현  (1) 2025.04.14
C의 기본 구조와 데이터 출력  (0) 2025.04.07