문자 / 문자열 입출력 함수

이지우·2022년 10월 12일
0

C언어

목록 보기
11/17

문자 입출력 함수

scanf() 함수

%c 변환 문자 사용

%c는 알파벳이나 숫자 모양의 문자 등 형태가 있는 문자와 공백, 탭, 개행 문자도 입력한다.

int scanf("%c", &c);

여러 문자를 공백으로 구분하여 입력하기 위해서 공백은 무시하고 그 외의 문자만 입력받기 위해서는 %c 앞에 공백이나 \t, \n를 추가한다.

scanf(" %c  %c", &ch1, &ch2);

getchar() 함수

표준 입력 스트림(stdin)인 키보드로부터 하나의 문자를 입력받는 함수

int getchar(void); // 함수 원형

fgetc() 함수

getchar() 함수와 마찬가지로 표준 입력 스트림(stdin)인 키보드로부터 하나의 문자를 입력받는 함수

하지만 getchar() 함수와는 달리 문자를 입력받을 스트림을 인수로 전달하여 직접 지정할 수 있다.

따라서 키보드뿐만 아니라 파일을 통해서도 문자를 입력받을 수 있다.

int fgetc(FILE *stream);  

putchar() 함수

표준 출력 스트림(stdout)인 모니터에 하나의 문자를 출력하는 함수

int putchar(int c);  

fputc() 함수

putchar() 함수와 마찬가지로 표준 출력 스트림(stdout)인 모니터에 하나의 문자를 출력하는 함수

하지만 putchar() 함수와는 달리 문자를 출력할 스트림을 인수로 전달하여 직접 지정할 수 있다.

따라서 모니터뿐만 아니라 파일을 통해서도 문자를 출력(저장)할 수 있다.

int fputc(int c, FILE *stream);

예제

EOF 발생할 때까지 입력받고 출력하는 예제

  • EOF 강제 발생 = ctrl + z
#include <stdio.h>

int main() {
	int ch;
	while((ch = getchar()) != EOF)
		putchar(ch);
}

'x'문자가 입력될 때까지 계속해서 영문자를 입력받고 출력하는 예제

#include <stdio.h>  

int main() {
    char ch;
    printf("x가 입력될 때까지 영문자를 계속 입력받습니다 :\n");  
 
    while ((ch = getchar()) != 'x') {
        putchar(ch);
    }  

    printf("x를 입력하셨습니다.\n");  
}

_getch() 함수

getchar() 함수와 마찬가지로 하나의 문자를 읽어서 반환하는 함수이지만 버퍼를 사용하지 않는다.

int _getch(void);

_putch() 함수

putchar() 함수와 마찬가지로 하나의 문자를 출력하는 함수이지만 버퍼를 사용하지 않는다.

void _putch(int c);

예제

#include <stdio.h>
#include <conio.h>

int main() {
	int ch;
    while((ch = _getch()) != 'q')
    	_putch(ch);
}

문자열 입출력 함수

scanf() 함수

문자열을 읽어서 문자배열 s[]에 저장하는 함수

공백을 만날 때까지만 입력을 받는다.

int scanf("%s", s);

printf() 함수

배열 s[]에 저장되어 있는 문자열 출력

int printf("%s", s);

gets_s() 함수

한 줄의 문자열을 읽어서 문자 배열 s[]에 저장하는 함수

마지막 \n까지 저장된다.

하지만 특정 환경에서는 에러가 발생할 수 있음
-> fgets() 함수를 사용하자

char *gets_s(char *s, int size);

fgets() 함수

키보드뿐만 아니라 파일에서도 문자열을 입력받을 수 있는 함수

char *fgets(char * restrict s, int n, FILE * restrict stream);  

첫 번째는 입력받는 문자열을 저장하기 위해 선언한 배열의 시작 주소,
두 번째는 입력받을 수 있는 문자열의 최대 길이('\0' 포함),
마지막은 문자열을 입력받을 스트림을 전달

puts() 함수

배열 s[]에 저장되어 있는 한 줄의 문자열을 출력하는 함수

int puts(const char *s);  

예제

gets_s() 함수 예제

int main() {
    char a[100];
    gets_s(a, sizeof(a));
    printf("%s\n", a);
}

fgets() 함수 예제

#include <stdio.h>
#include <string.h>

int main(void) {  
    char a[100];
    fgets(a, sizeof(a), stdin);		// stdin : 키보드 입력
    printf("%s\n", a);
}
profile
노력형 인간

0개의 댓글