관리 메뉴

History

[c언어]getchar()함수로 문자열 입력받기 본문

C,C++/개념 실습 프로그래밍

[c언어]getchar()함수로 문자열 입력받기

luckybee 2022. 10. 3. 00:51
728x90
반응형

getchar 함수는 getc 함수처럼 표준 입력 버퍼에서 한 개의 문자를 가져오는 '표준 입력 함수'이다. 

 

이번 실습은 getchar 함수를 이용하여 사용자가 Enter 키를 누를 때까지 입력한 문자를 모두 저장하는 프로그램을 만들어본다.

 

위 기능은 gets함수 기능과 똑같다.

 

코드는 아래와 같다.

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

#define MAX 64

int main()
{
	int i = 0;
	char ch, arr[MAX];

	printf("Input:");
	while (i< MAX-1)  //마지막 배열에는 null값을 받아야하기 때문에
	{
		ch = getchar(); //문자 1개를 입력받는다.
		if (ch=='\n') {  //enter를 누르면 입력 종료
			break;
		}
		arr[i++] = ch;  //반복문을 빠져나오기 전까지 배열에 값을 넣는다.
	}
	arr[i] = 0; //문자열 마지막에는 null값을 넣어줘야한다.
	printf("Output:%s", arr);  //출력
	return 0;
}

실행화면은 아래와 같다.

실행화면

 

추가로 위의 코드를 따로 기능 분리하여 함수로 구현하면 아래와 같다.

 

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

#define MAX 64


int ReturnString(char*a_arr)
{
	int ch, i = 0;
	while (i < MAX - 1)  //마지막 배열에는 null값을 받아야하기 때문에
	{
		ch = getchar(); //문자 1개를 입력받는다.
		if (ch == '\n') {  //enter를 누르면 입력 종료
			break;
		}
		a_arr[i++] = ch;
	}
	a_arr[i] = 0; //문자열 마지막에는 null값을 넣어줘야한다.
	return i;  //i의 숫자가 문자열의 갯수다.
}

int main()
{
	char arr[MAX];
	int len;

	printf("Input:");
	len = ReturnString(arr);
	printf("len: %d  arr: %s",len ,arr);
	return 0;
}

 

문자열 배열을 포인터로 바꾸고 입력받는 변수를 없애면 아래 코드와 같다.

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

#define MAX 64


int ReturnString(char*a_arr)
{
	int i = 0;
	while (i < MAX - 1)  //마지막 배열에는 null값을 받아야하기 때문에
	{
		*(a_arr + i) = getchar(); //문자 1개를 입력받는다.
		if (*(a_arr + i) == '\n') {  //enter를 누르면 입력 종료
			break;
		}
		i++;
	}
	*(a_arr + i) = 0; //문자열 마지막에는 null값을 넣어줘야한다.
	return i;
}

int main()
{
	char arr[MAX];
	int len;

	printf("Input:");
	len = ReturnString(arr);
	printf("len: %d  arr: %s",len ,arr);
	return 0;
}

 

728x90
반응형
Comments