[C언어] : 문자, 문자열 입력 함수 예제

지환·2022년 1월 9일
0

C언어

목록 보기
20/37
post-thumbnail

gets 함수부터 예제를 시작하곘다.

// 간단하게 gets 함수로 문자열을 입력받자.

#include <stdio.h>

int main()
{
	char extra_string[10];
	gets(extra_string);
	printf("input : %s\n", extra_string);

}
  • extra_string을 선언했다. NULL문자 포함하기 떄문에 최대 9개의 문자까지 저장이 가능하다.
  • 문자열을 입력받아 extra_string에 저장하고 -> 출력했다.

<결과>

  • 만약에 우리가 사용하는 gets함수가 안 된다면, fgets함수를 사용하자.
  • 하지만 fgets함수는 Enter 키 값이 포함되기 떄문에 enter 키는 아스키코드 값이 10이다.
fgets(input_string, 10, stdin)//버퍼 초기화

다음 예제를 보자.

#include <stdio.h>

int main()
{
	char chest_string[20];
	if (NULL != gets(chest_string)) { //if값이 사용자가 값을 입력했는데, 그 값이 정상적으로 입력되면 ->input 
	
		printf("input : %s\n", chest_string);
	}
	else {
	
		printf("input - > Cancled\n"); // 사용자 입력이 정상적으로 완료되지 않아서 반환 값이 NULL일 때, 출력하는 문구다.
	}

}
  • 지속적으로 chest 값을 입력했다.

<결과 1> 값이 chest_string

  • 배열 입력 값이 더 크게 출력했기 때문에 이와 같은 문제가 발생했다.

<결과2> 제대로 된 값 넣기

  • 잘 출력된다. 만약에 이 수식을 fgets로 변경하고 싶으면
if (NULL != gets(chest_string))

if (NULL != fgets(chest_sting, 10, stdin)) 이다.

다음 예제는 문자열을 입력 받을 때 키 입력 횟수를 제한해 보는 예제를 풀어보자.

include <stdio.h>

int GetString(char buffer[], int limit)
{
	int i;
	for (i = 0; i < limit; i++) // i를 limit 범위까지 돌려준다.
	{
		buffer[i] = getchar(); // buffer  < 입력 받은 값>을 저장한다. 
		if (buffer[i] == '\n') { //Enter 키가 체크되면 사용자 입력이 완료되었다는 의미다. 문자열을 완성 후 함수를 종료한다.
		
			buffer[i] = 0; 
			return 1;
		}

	}
	buffer[i] = 0;
	rewind(stdin); // 버퍼를 초기화 시켜준다.
	return 0;

}

int main()
{
	char num[15];
	int string_A;
	string_A = GetString(num, 14);
	if (string_A == 1) printf("input : %s\n", num);
    //1은 정상입력 된 경우 
	else printf("input : %s -> out of range\n", num);


}
  • buffer는 사용자가 입력한 문자열을 저장할 배열이다.
  • limit는 최대 입력 가능한 문자 개수이며,
  1. 1을 반환 -> 정상 입력
  2. 0을 반환-> 길게 입력해서 제한된 개수만 받았다. 의미다.
if (buffer[i] == '\n') 
  • Enter 키가 체크되면 사용자 입력이 완료되었다는 뜻이다.

<결과 : 참 >

<결과 : 거짓 Out of range>

profile
아는만큼보인다.

0개의 댓글