반응형

보통 C언어에서 자주 사용되는 입력함수는 scanf이고 출력함수는 printf 일 것이다.

그러나 동일 기능을하는 함수가 있다. 입력 fgets 함수, 출력 fputs 함수이다.

 

앞에 f는 "file"을 뜻하고 뒤에 s는 "string"을 뜻한다.

즉, string타입을 갖고 쓰는 함수라고 볼 수 있다.

 

fputs( ) 함수 원형 : int fputs(const char* str, FILE* pFile)

fgets( ) 함수 원형 : int fgets(char* str, int* num, FILE* pFile)

  아래에서 파일대신 stdout과 stdin을 사용했는데, 이는 출력으로 모니터(stdout)을 쓰고, 입력으로 키보드(stdin)를 사용함 의미

#include <stdio.h>

void ClearLineFromReadBuffer(void);

int main()
{
	char perID[7];							//	ex) 880808'\0' 총 NULL을 포함한 7개 배열 메모리 할당.
	char name[10];

	fputs("주민번호 앞 6자리: ", stdout);	//	모니터에 출력 (stdout)
	fgets(perID, sizeof(perID), stdin);		//	최대 크기 7 byte를 키보드(stdin)로 부터 입력 받음.

	/************/
	ClearLineFromReadBuffer();				//	입력 버퍼를 비우기. 그냥 읽어들임. 반환없이.
	/************/

	fputs("이름 입력: ", stdout);			//	모니터에 출력
	fgets(name, sizeof(name), stdin);		//	최대 크기 10 byte를 키보드로 부터 입력 받음.

	printf("주민번호: %s \n", perID);
	printf("이름: %s \n", name);

	return 0;
}

void ClearLineFromReadBuffer(void)
{
	while (getchar() != '\n');		//	문자열의 끝을 알리는 '엔터키'가 들어올때까지 계속 Read가 되어짐. 즉, 버퍼의 값을 사용하지 않고 그냥 버려짐.
}

/*
	함수 원형: int fflush(FILE * stream);
	성공시 0을 반환, 실패시 EOF 반환

	int fflush(stdout);		//	모니터로 출력 될 버퍼를 비우는 함수! (stdout: 모니터 출력을 의미)
							//	**버퍼를 비운다는 것은, 목적지로 빨리 보냄(다 출력시켜라 를 의미)
*/

유저로부터 입력을 받으면 '\n' (엔터키)가 올때까지 계속 버퍼를 비워버리는 함수

반응형

(결과 확인)

 

 

 

 

 

반응형

+ Recent posts