[혼공학습단] C언어입력함수 scanf()사용법

혼공학습단 7기 학습 및 기록용입니다.(공부한 것을 기록하고 다시 보기 위한 블로그입니다.

데이터 입력인 scanf()를 간단히 조사한다.

키보드에서 타이핑하는 모든 내용은 문자로 인식되는 입력한 데이터를 연산 가능한 정수 또는 잘못 사용하려면 변환 프로세스가 필요하다

이때 사용하는 것이 scanf() 함수다.변환 문자를 통해 어떤 데이터로 변환할지 달라진다

사용법은 scanf(“%d”,&a);이다.%d는 int형 변환 문자 a는 변수명이고 & 기호는 주소를 구하는 연산자이다 (※ & 기호의 내용은 포인터 내용에서 나온다 ※)

변수 이름 앞에 & 를 붙이기만 하면 된다

코드를 작성하여 실행하면 결과 창이 깜박거릴 것이다 그 이유는 scanf() 함수를 실행한 결과이며 값을 입력할 때까지 그 이후의 문장을 실행하지 않는다.

그 상태에서 정수를 입력하면 그 값이 변수 a에 저장된다.이후 엔터를 입력하면 printf()에 따라 변수 a의 값이 출력된다.

scanf() 함수와 같이 메모리에 직접 접근하는 함수를 사용하면 Visual studio의 최근 버전에서는 보안 문제 때문에 오류가 발생하는 이러한 보안 검사 기능을 제한하는 문장을 첫 줄에 넣으면 된다.코드: #define_CRT_SECURE_NO_WARNINGS(가 아닌 scanf_s()로 사용 가능) 여기서 scanf()함수 사용시 주의사항이 있음

1.scanf()함수로 변수명을 지정할 때는 반드시 & 를 붙여야 한다.2.scanf()함수에서 사용한 변환문자에 맞는 형태의 데이터를 입력해야 한다.

그럼 scanf()함수의 응용을 좀 확인해 보자

scanf()함수는 복수의 변환 문자를 나열하고 둘 이상의 변수에 값을 입력할 수 있다.위의 코드와 같이 쉼표로 구분하여 둘 이상의 변수에 값을 입력할 수 있다

2개 이상의 값을 입력받을 수 있다

문자열도 입력할 수 있다

문자는 char 자료형에 %c 변환 문자를 사용하고 문자열은 char 배열에 %s 변환 문자를 사용한다(※ 배열은 배열 파트로 나온다※)

그러나 문자열을 입력할 때 배열명에 & 기호를 붙이지 않는다!!

(※ char 변수에 문자 입력 시 공간(공백), 엔터 등을 하나의 문자로 전달됨※) (※공간이나 엔터, 탭 등을 만나면 바로 앞까지 저장되는 ※)

코드를 작성하고 실행하면 문자 입력, 문자열 입력하면 된다

문자열에 배열 charn[10]의 의미는 charn에 10바이트의 크기가 있다는 뜻이다. (char 자료형은 1바이트)(문자 열은 끝을 알리기 위해 마지막에 NULL 값이 있다)(charn 크기에 맞게 입력해야 한다.입력크기를 초과하면 에러가 난다) 중요!! (※ 한글은 2바이트/영문은 1바이트※)

자료형 크기 입력 변환 문자 (unsigned) short 2 바이트 (byte) %hd (%hu) (unsigned) int 4 바이트 (byte) %d (%u) (unsigned) long 4 바이트 (byte) %ld (%lu) (unsigned) long 8 바이트 (byte) %lld (%lu) float 4 바이트 (byte) fd (byte) long 4 바이트 (byte) 배열

이제 간단한 확인 문제를 통해 알아보자.

  1. 다음과 같이 변수가 선언되어 있을 때 scanf()함수의 사용법이 올바른 것은?(1)scanf(“%d”,&ch);(2)scanf(“%d”,&sh);(3)scanf(“%d%f”,&in,&ft);(4)scanf(“%f”,&db);
  2. 답은 3번이다. 그 이유는 위 자료형 표를 보면 된다.
  3. 2. 다음 프로그램의 빈칸에 적절한 내용을 기입하시오.실행결과 : 좋아하는 과일 : 망고 몇 개 : 3 망고 3개 드립니다.

위의 코드와 같이 작성하면 된다

문자열 fruit[20] fruit 크기인 20바이트 안에 망고(4바이트) 들어간다.그리고 문자열은 & 기호 없이 작성하면 된다.과일 수를 cnt로 입력하여 출력하면 된다

3. 키보드로 문자를 입력하고 아스키 코드 값을 출력하는 프로그램을 작성하라.어떤 문자가 입력될지를 실행할 때 결정된다.실행 결과 문자 입력: AA 문자의 아스키 코드 값은 65입니다.

문자 입력:tt 문자의 아스키 코드 값은 116입니다.

위의 코드처럼 작성해 주면 된다

문자 ch의 입력을 받아 그것을 변환 문자 정수형으로 출력하면 아스키 코드값이 나온다 대문자 A는 65값 소문자 t는 116값이 나온다

error: Content is protected !!