C언어

02. C언어_표준 입력 함수

만수르코딩방 2024. 5. 15. 16:48

표준 입력함수란? 

: 표준 입력 함수란 표준입력스트림(stdin)으로부터 데이터를 입력 받아오는 함수를 뜻합니다.
 

표준 입력함수의 종류

1) int scanf(const char*, int, char, double, str) *str은 배열 명

- 입력값 : 문자열 상수, 정수, 문자, 실수, 여백없는 문자열 변수)
- 리턴값 : (정상입력시)성공적으로 입력받은 데이터의 개수, (실패시) EOF(-1)
ex) res = scanf("%d\n", &num);

 

2) int getchar() : 문자전용 입력함수

- 입력값 : space, tab, enter문자를 포함한 모든 문자 입력 가능
- 리턴값 : (정상입력시) 성공적으로 입력 받은 문자의 아스키코드, (실패시) EOF(-1)
ex) res = getchar();
 

3) char* fget(char*, int, FILE *) : 문자열 입력함수

- 입력값 : 마지막으로 전달받은 stdin입력버퍼에 여백이 있는 문자열 입력
* 입력 종료조건으로 입력해준(엔터)를 개행문자(\n)로 입력받아옴(불필요시 제거 사용 필요)
- 리턴값 : (정상 입력시)성공적으로 입력받은 문자열 버퍼 내 저장처의 주소/ (실패 시) Null Pointer(0번지) 
ex) fgets(str, sizeof(str), stdin); *str은 배열명
 

- 표준 입출력 함수 예제

#include<stdio.h>
#pragma warning (disable : 4996)

//점수가 5번 입력되면 평균값을 구하는 프로그램을 만드시오.
//만약 문자가 입력되면 경고문을 띄우고 입력받은 문자를 지우고 정상 입력값을 다시 입력받으세요

int main() {
	int count = 1;
	int sum = 0;
	int num;
	void myflush();

	while (count <= 5) {
		printf("정수 입력 (%d)번째", count);
		scanf("%d", &num); //scanf 할 때는 입력대상체의 주소를 입력받아서 하나씩 읽어들여
		if (getchar() == '\n') {//정상입력함수이면 다 입력되어서 입력버퍼에 남자있는 숫자가 개행문자외에는 없어
			printf("num = %d\n", num); //입력대상체에 입력된 값을 출력해
			sum += num;
			count++;
		}
		else {
			printf("정상입력값을 다시 입력하시오");
			myflush();
		}
	}
	printf("%d\n", sum);
	printf("%d\n", count - 1);
	printf("%d\n", sum / (count - 1));
	return 0;
}

void myflush() {
	while (getchar() != '\n') { //버퍼에 남아있는 문자가 개행문자일때까지 읽어내서 버퍼를 비워
		;
	}
}