독학으로 배우는 C언어 016 문자 자료의 입력
Contents
1. 단일 문자형 자료의 입력
하나의 문자를 입력받아 처리한다.
실습 1: 하나의 문자 입력
다음의 프로그램을 작성하여 ex051.c 저장하고 실행해 보자.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
char a;
scanf("%c", &a);
printf("%c \n", a);
return 0;
}
◉ 설명 : 행 설명
위 프로그램은 문자형을 입력받아 출력하는 프로그램이다. 문자형은 한 개의 문자만을 입력받을 수 있다. 문자형도 변수 앞에 & 을 사용해야 한다.
실습 2: 두 개의 문자 입력
다음의 프로그램을 작성하여 ex052.c 저장하고 실행해 보자.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
char a, b;
scanf("%c%c", &a, &b);
printf("%c %c\n", a, b);
return 0;
}
◉ 설명 : 행 설명
입력이 in 인 경우 i 는 a 가 n 은 b 에 대입된다.
만약 i n 와 같이 중간에 공란이 있을 경우에는 스페이스가 b 에 대입되므로 주의해야 한다.
scanf() 함수에 %c 와 %c 사이에 공백이 있다면 상관이 없다.
실습 3: 공백 무시
ex052.c 프로그램에서 scanf() 함수에 %c 와 %c 사이에 공백을 넣어 수정하여 ex053.c 저장하고 실행해 보자.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
char a, b;
scanf("%c %c", &a, &b);
printf("%c %c\n", a, b);
return 0;
}
◉ 설명 : 행 설명
프로그램을 실행하여 다음과 같이 입력해 보고 결과를 확인해 보자.
in [Enter] i n [Enter] i [Enter] n [Enter] input [Enter] |
결과는 모두 in이 출력된다.
2. 문자열 자료의 입력
단어를 입력할 수 있다.
실습 1: 단어의 입력
korea를 입력받아 출력하는 프로그램을 작성하여 ex054.c 저장하고 실행해 보자.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
char str[20];
printf(" 문자열을 입력하세요 ? ");
scanf("%s", str);
printf("%s\n", str);
return 0;
}
◉ 설명 : 행 설명
문자열 자료를 입력받으려면 배열을 이용하여야 한다.
배열은 다음에 자세히 배우기로 하고 기본적인 사항만 다루기로 하자.
char str[20]; 은 문자열 배열이 선언되고 str 에 20문자의 영역이 확보된다.
배열이 선언된 다음 scanf("%s",str); 하면 20문자 안의 범위에서 문자 자료를 입력받을 수가 있다.
그리고 배열 변수를 사용하여 scanf() 함수로 문자열을 입력받을 때는 &를 사용하지 않는다.
문제1 : 이름과 점수를 입력받아 총점과 평균 구하기
이름, 국어, 영어, 수학, 과학 4과목 점수를 입력하여 총점과 평균을 구하는 프로그램을 작성해 보자.
실행 결과 |
이름? 홍길동 국어? 100 영어? 88 수학? 90 과학? 95 홍길동의 점수 총점 = 373 평균 = 93.25000 |
정답
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
char name[10];
int kor, eng, mat, sci, tot;
float avg;
printf("이름?");
scanf("%s", name);
printf("국어?");
scanf("%d", &kor);
printf("영어?");
scanf("%d", &eng);
printf("수학?");
scanf("%d", &mat);
printf("과학?");
scanf("%d", &sci);
tot = kor + eng + mat + sci;
avg = (float)tot / 4;
printf("\n");
printf("%s의 점수\n", name);
printf("총점 = %d ", tot);
printf("평균 = %f ", avg);
return 0;
}
3. 입력 자료의 구분
입력 자료 사이의 구분을 공백이나 엔터가 아닌 사용자가 임의로 다른 문자로 구분하여 입력할 수 있다.
scanf("%d,%d",&a,&b);
20,30 [Enter]
위와 같이 입력 자료 사이에 구분 표시를 , 지정하였을 경우에는 지정한 문자를 반드시 입력해야 한다.
실습 1: 입력 자료의 구분
다음의 프로그램을 작성하여 ex055.c 저장하고 실행해 보자.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
int y, m, d;
printf("생년월일을 입력하세요.(y/m/d)?");
scanf("%d/%d/%d", &y, &m, &d);
printf("\n 생년월일은 %d 년 %d 월 %d 일 \n", y, m, d);
return 0;
}
◉ 설명 : 행 설명
scanf("%d/%d/%d", &y, &m, &d); 에서 사용한 입력 구분 문자 / 를 사용하여 입력해야 한다.
'C 프로그래밍' 카테고리의 다른 글
독학으로 배우는 C언어 018 8진수와 16진수의 표시 (0) | 2024.08.15 |
---|---|
독학으로 배우는 C언어 017 다양한 입력 함수 (0) | 2024.07.30 |
독학으로 배우는 C언어 015 숫자 자료의 입력 (2) | 2024.07.14 |
독학으로 배우는 C언어 014 문자와 문자열 출력함수 (0) | 2024.07.07 |
독학으로 배우는 C언어 013 문자열 데이터의 출력 (0) | 2024.07.01 |
댓글