-
1. scanf 함수
- scanf 함수의 입력 형태 정의
데이터를 입력받는 형태를 지정할 수 있다. 즉 입력 서식을 지정하는 것이다.
예 : "%d %o %x"
-실수 입력에 있어서 주의사항
정밀도 생각!
소수 6자리 이하의 실수 입력 시 %f 사용
소수 6자리를 넘는 실수 입력 시 %e 사용
단! double형 변수를 사용하는 경우에는 서식 문자 %le를 사용
예) 변수 입력 및 출력
#include <stdio.h>
int main()
{
int Num1,Num2;
int result;
printf("첫번째 수를 입력 : ");
scanf("%d",&Num1);
printf("두번째 수를 입력 : ");
scanf("%d",&Num2);
result = Num1 + Num2;
printf("두 수의 합은 %d 입니다.\n“,result);
return 0;
}
Q1) 학생의 성적을 입력한 뒤 합계와 평균을 구해보세요.
정수형 변수 3개만 사용하여 코드를 작성
================
이 름 : 홍 길 동
================
국 어 : 100
영 어 : 98
수 학 : 75
================
합 계 : 273
평 균 : 91.00
================
입력 변수 : kor, eng, math
★ 주의 : 평균이 실수로 출력!!!
문자열의 입력 예와 실행 결과
2 : #include <stdio.h>
3 :
4 : main()
5 : {
6 : char name1[30], name2[30];
7 : printf("이름을 입력하세요! ");
scanf("%s", name1); ①
8 : printf(“이름을입력하세요! ");
scanf("%s", name2);
9 : printf("나의 이름은 %s 입니다.\n", name1);
10: printf("나의 이름은 %s 입니다.\n", name2); ②
11: }
이름을 입력하세요! Hong,Gil-Dongꏮ
이름을 입력하세요! Hong Gil Dongꏮ
나의 이름은 Hong,Gil_Dong 입니다.
나의 이름은 Hong 입니다.
① scanf() 함수를 통하여 문자형 배열로 문자열을 입력받을 경우에는 변수명 앞에 '&'를 붙이지 않는다.C 언어에서 문자열은 1차원 배열로 취급되며, 배열명은 배열 첫 번째 원소의 주소를 나타낸다. 따라서 7행에서 배열명 "name1"은 "&name1[0]"을 나타내므로, scanf() 함수에서 인수가 배열인 경우에는 배열명 앞에 주소 연산자 '&'를 붙이지 않는다. 자세한 내용은 10, 11장을 참조하기 바란다.② 10행의 실행 결과와 같이, 입력되는 문자열 사이에 공백이 있으면 첫 번째 나타나는 공백 이후의 문자열은 무시된다. 그러므로 scanf() 함수로 문자열을 입력할 경우에는, "Hong,Gil-Dong"과 같이 문자열 사이에 공백이 없도록 하여야 원하는 결과를 얻을 수 있을 것이다.** scanf도 입력값에 대한 제한을 넣거나 공백입력도 가능하다scanf 입력형식에 조건을 부여하면 된다!!!!예1) scanf("%[12345]s",data); >>> 입력이 4567일 경우 45만 입력됨(%s문자열 입력시 1~5 사이 값이 있는 경우 그 값 출력,%s는 &적지않아도 됌)예2) scanf("%[^12345]s",data); >>> 입력이 4567일 경우 67만 입력됨 << ^는 조건 안 이외의 문자열만 입력허용예3) scanf("%[0-9]s",data); >>> 입력이 45ab일 경우 45만 입력됨 << 0-9는 0123456789와 같은 의미예4) scanf("%[^\n]s",data); >>> 개행문자를 만나기 전까지 입력허용 (공백도 입력이 된다 !!!!!scanf("%[^\n]s", data);'c언어 기초 ' 카테고리의 다른 글
switch에 의한 선택 실행 (0) 2017.03.20 제어문 소개 및 if 문 (0) 2017.03.20 연산자 (0) 2017.03.20 C언어 Visual Studio scanf 에러 해결 방법 (2) 2017.03.19 데이터 저장을 위한 변수 (0) 2017.03.17