티스토리 뷰

안녕하세요, IT디자이너입니다.

 

이번에는 C언어에서 printf 또는 scanf를 제외한 문자 및 문자열 입,출력에 관한 함수를 소개해드리도록 하겠습니다.

 

 

기존에 사용하였던 printf와 scanf는 콘솔을 전용 입출력 함수입니다. 만약 여러분이 입력한 문자 또는 문자열을 파일로 출력하거나 저장하기 위해서는 다른 "표준 입출력 함수"를 사용해야 합니다. 

 

1. int getchar() , int fgetc(FILE *stream);  문자입력

getchar() 함수는 문자를 입력받는 함수이며 대상은 콘솔이며 반환형은 int형입니다. 

 

1) getchar() 사용예시 

#include <stdio.h>


int main()
{

	int str;

	str = getchar(); // 콘솔 입력

	printf_s("%c", str);

}

 

2) fgetc(FILE *stream);

 

fgetc(FILE *stream) 함수 또한 문자를 입력받지만 스트림을 매개변수로 전달하여 설정할 수 있습니다. 

 

stdin은 키보드 문자입력 스트림입니다. 

#include <stdio.h>


int main()
{

	int str;

	str = fgetc(stdin); // stdin은 키보드 입력 스트림 생성요청!

	printf_s("%c", str);

}

 

 

 

2. int putchar(int str) , int fputc(int str,FILE *stream); 문자출력

 

1) putchar(int str) 함수 사용방법입니다. 

#include <stdio.h>


int main()
{

	int str;

	str = fgetc(stdin); // 문자 입력
	
	putchar(str); // 문자 출력
}

 

 

2) fputc(int str,FILE *stream) 함수 사용방법이며, fputc 또한 원하는 스트림을 설정할 수 있습니다. 

stdout은 콘솔대상 문자 출력 스트림입니다. 

#include <stdio.h>


int main()
{

	int str;

	str = fgetc(stdin); // 문자입력

	fputc(str, stdout); // 문자 출력
}

 

위의 문자 입출력 함수들의 공통점은 바로 반환형이 int라는 것입니다. 그 이유는 해당 문자 입출력 함수의 에러 발생시 반환값이 EOF인데 EOF는 상수형 -1로 정의되어있습니다. 

 

만야 반환형이 char일 경우 컴파일러 마다 char가 unsigned char가 default 설정이 되어있는 경우가 있기 때문에

int 반환형을 사용합니다. 

 

 

3. int  puts(char str) , int fputs(char str,FILE *stream); 문자열 출력

1) puts(char str) 문자열 출력입니다. 

 

puts(char str)의 특징은 자동 개행이 이루어진다는 것입니다. 

#include <stdio.h>


int main()
{

	char str[6] = "asdf";

	puts(str);

	
}

 

 

2) fputs(char str,stdout) 스트림 지정 문자열 출력입니다. 

#include <stdio.h>


int main()
{

	char str[6] = "asdf";

	fputs(str, stdout);
	
}

puts와는 다르게 자동 개행이 이루어지지 않으며, 스트림을 매개변수로 전달하여 지정할 수 있습니다. 

 

 

4. char gets_s(char str) , int fgets(char str,sizeof(str),FILE *stream); 문자열 입력

 

1) gets_s(char str) 문자열 입력

 

#include <stdio.h>


int main()
{

	char str[6];

	gets_s(str);

	printf_s("%s",str);

}

 

 

2) fgets(char str,sizeof(str),FILE *stream); 스트림 지정 문자열 출력입니다. 

 

#include <stdio.h>


int main()
{

	char str[6];

	fgets(str,sizeof(str),stdin);

	printf_s("%s",str)

}

스트림을 지정하여 문자열을 출력할 수 있습니다. 

 

 

5. 스트림이란?

 

스트림이란 한쪽 방향으로 흐르는 실행중인 프로그램과 외부장치와의 연결된 다리라고 생각하시면 됩니다. 

 

fgets 같은 경우는 실행중인 프로그램인 콘솔과 키보드와 연결된 상태이며 키보드로 부터 입력된 데이터가 콘솔로 입력됩니다. 

 

또한 스트림은 버퍼링(Buffering) 기법을 사용합니다. 

 

버퍼링을 예를 들어서 설명드리자면, 10개의 쌀가마를 1개씩 목적지까지 전달하는 방식이 아닌 손수레를 이용하여 10개의 쌀가마를 한 번에 목적지까지 전달하는 방식이라고 생각하시면 됩니다.

 

이렇게 스트림을 이용하여 키보드나 콘솔이 아닌 우리가 사용하는 텍스트 파일이나 바이너리 파일을 대상으로 입출력이 가능해집니다.

 

 


 

IT 디자이너였습니다. 감사합니다.

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG more
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함