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
반응형