검색결과 리스트
글
<scanf()함수란?>
키보드로부터 데이터를 입력받는 함수이다.
형태)
scanf("%d", &a);
%d→입력을 위한 서식문자, &a→변수의 주소
변수의 주소 a에다가 사용자가 입력한 서식문자에 맞춰 저장하겠다. 라는 의미이다.
이론은 여기까지하고 무조건 실습이다!
<실습>
#include <stdio.h> // printf()함수와 scanf()함수는 stdio.h파일 안에 라이브러리로 정의되어 있어서 헤더파일 stdio.h를 반드시 포함 시켜주어야 한다.
int main()
{
int a;
printf("What is your tall? : \n");
scanf("%d", &a); // printf함수에서 키를 입력하라고 나온다. 그 곳에 170을 입력했다고 가정하자. 그럼 170이라는 숫자가%d의 서식형태(정수)에 맞춰서 위에 만들어 놓은 변수 a에 저장된다.
printf("you are %d cm. good! : \n", a); // a를 출력하는 것이다.
return 0;
}
-결과-
<심화 실습>
printf()함수와 scanf()함수를 배웠으니, 이 두 함수를 이용해서 재밌는 프로그램을 짜보자.
원의 반지름을 입력 받아서 넓이는 계산하는 프로그램을 만들어보자!
#include <stdio.h>
int main()
{
double r;
double pi = 3.14;
printf("반지름을 입력하세요 : \n");
scanf("%lf", &r);
printf("입력하신 반지름은 %lf이며, 넓이는 %f입니다. \n", r, r*r*pi);
return 0;
}
-결과-
<scanf 함수 사용시 주의할 사항>
1. 두개 이상의 값을 입력할 때
프로그램 코드를 짜다가 두 개이상의 문자나 숫자를 나란히 입력한다고 가정해보자.
<실습>
여기서 왜 b의 값에는 아무것도 찍히지 않은 것일까? 분명히 위에는 a b라고 찍었는데....
이유는 a를 쓰고, space bar를 눌른 후, b를 썻다. 이때 space bar의 한칸 띄우는 데이터가 b에 들어갔기 때문이다. 위에 코드를 보면 scanf에서 %c%c를 붙여사용했다. 그렇다면 이 문자로 붙여서 ab이렇게 찍으면 아마 제대로 출력이 될 것이다.
혹은 밑의 실습처럼 %c %c이렇게 한칸을 띄어서 사용하면 된다.
<실습>
2. 입력을 각각 한줄에 따로 받을때
하나의 데이터를 입력받고 다음줄에 데이터를 입력받을 때, 사람들은 누구나 데이터하나 찍고 엔터를 쳐서 다음줄 가서 데이터 하나마저 찍고 엔터를 칠 것이다.
이때, 버퍼라는 개념이 들어가는데, 사람들이 엔터를 치는 순간 그 엔터라는 데이터가 버퍼라는 임시저장공간에 저장되어 버린다. (모든 데이터가 바로 변수에 저장되는 것이아리고 버퍼라는 임시저장공간에 저장되었다가 저장됨)
그렇기때문에 엔터라는 값이 b안에 들어가버리는 것이다.
<실습>
이렇게 되어버리기 때문에 한 문자의 입력값을 받은 후, 버퍼값을 지워줘야한다. 그 명령어는 fflush(stdin);이다.
<실습>
'Programming > C' 카테고리의 다른 글
C언어 - 자료형, sizeof()함수 (0) | 2016.02.03 |
---|---|
C언어 - 연산자(대입, 산술, 복합 대입, 증감, 관계, 논리, 조건, 비트 연산자) (0) | 2016.02.02 |
C언어 - 상수(리터럴 상수, 심볼릭 상수) (0) | 2016.02.01 |
C언어 - printf()함수, 서식 문자, 특수 문자, 필드 폭 지정하기 (0) | 2016.01.30 |
C언어 - 전처리기, 헤더 파일, C언어 기본 개념 (0) | 2016.01.30 |
RECENT COMMENT