* 문자 입력함수
1. getchar()
=> stdio.h 존재.
=> Enter : 입력종료 + Enter값도 \n 값으로 키보드 버퍼(KeyBoard Buffer)에 저장.
=> Space : 공백으로 입력처리.
=> 단점 : getchar()로 숫자를 입력받을때, 두자리 숫자를 못받는다. 12를 1과 2로 따로 인식해 버린다.
=> 키보드 버퍼(KeyBoard Buffer)로 부터 입력을 받음. fflush(stdin) 필요.
=> Enter가 입력될 때 까지 키보드 입력값들을 계속해서 키보드 버퍼(KeyBoard Buffer)에 저장.
=> 키보드 버퍼에 존재하는 data중에서 버퍼 포인터가 위치한 곳으로부터 1byte 분량을 꺼내오고 버퍼 포인터를 1byte 만큼 이동시키는 함수이다.
ex)
처음 char ch = getchar()가 실행되어 키보드로 123 53 + Enter를 입력하면
KeyBoardBuffer : 123 53\n 값이 저장된다.
이 때,
다시 getchar()하면 2 가 나오고
다시 getchar()하면 3
다시 getchar()하면 ' '
다시 getchar()하면 5
다시 getchar()하면 3
다시 getchar()하면 \n 가 나온다.
void test() { char ch1, ch2; printf("첫번째 문자 데이터를 입력하세요."); ch1 = getchar(); fflush(stdin); // 키보드 버퍼를 모두 비워주는 함수 printf("두번째 문자 데이터를 입력하세요."); ch2 = getchar(); printf("첫번째 문자 = %c , 두번째 문자 = %c 입니다. \n",ch1,ch2); }
2. getche()
=> conio.h 존재.
=> Enter : 입력종료
=> space : 공백으로 입력처리
=> 키보드 버퍼를 사용하지 않아 getchar() 함수보다 속도가 빠른 문자 입력 함수이다.
=> Enter를 입력하지 않아도 키보드로 문자를 하나 입력하면 바로 입력이 끝나버린다.
void test() { char kor, eng; printf("국어 점수를 입력하세요. "); kor = getche(); printf("영어 점수를 입력하세요. "); eng = getche(); printf("국어 = %c , 영어 = %c 입니다. \n", kor,eng); }
3. getch()
=> getche()함수와 기능은 동일하다.
=> 입력 문자가 보이지 않는다.(보안용)
=> getche()와의 차이점 : 입력한 문자가 보이는 것과 안보이는 차이.
* 문자열 입력함수
1. gets()
=> stdio.h 존재.
=> Enter : 입력종료 , 키보드 버퍼(KeyBoard Buffer), 문자열에 에 저장되지 않음
=> space : 공백으로 입력처리, 문자열에 포함.
=> 이용 : 키보드 버퍼에 Enter 값이 있을 경우, Enter 값을 문자열 Data로 취급하여 null값으로 변환하여 문자 끝에 저장하고 키보드 버퍼 포인터를 enter값 뒤로 이동 시킴.
=> 단점 : 문자열 변수의 길이보다 긴 글자들을 입력하면 시스템에 문제가 발샐할 수 있음.
=> char형 크기가 정해진 배열만 사용가능, char * 사용불가능
int main(void) { char input[50]; gets(input); printf("문자열 입력값은 : %s", input); return 0; }
* 숫자 입력함수
1. scanf()
=> stdio.h 존재.
=> Enter :
1) 숫자 : 입력종료.
2) 문자열 : 입력종료.
3) 문자 : 입력종료 + \n로 취급.
=> space : 여러 숫자 입력시 구분자로 처리.
=> 동시에 여러 숫자 입력 가능
=> 자리수를 지정하여 입력 받을 수도 있다.
=> 입력 장치로부터 숫자, 문자, 문자열 등의 데이터를 입력서식(변환문자)을 이용하여 읽어 들이는 함수.
=> 형식 : scanf("구분 문자 및 입력 서식들", &변수, 배열일 경우 배열명);
=> 키보드 버퍼에서 Data를 읽어 들인 후에 버퍼 포인터를 엔터 값 뒤로 이동시켜 주지 않으므로 문자 변수에 Data를 받을 경우 주의하여야 한다.
int main(void) { int input1, input2; scanf("%d, %d", input1, input2); printf("숫자 입력값은 각각 1st : %d, 2nd : %d", input1, input2); return 0; }
'컴퓨터' 카테고리의 다른 글
[자료구조] Hash Table (해시 테이블) (6) | 2012.08.13 |
---|---|
[Visual Studio] 코딩 줄 번호 표시 (0) | 2012.08.11 |
[알고리즘] 알고리즘 성능 (0) | 2012.07.29 |
[C언어] #ifndef~ #endif (0) | 2012.07.29 |
[MySQL] Command Line 으로 원격지에서 MySQL 접속하기 (0) | 2012.07.23 |