%c 변환 문자 사용
%c는 알파벳이나 숫자 모양의 문자 등 형태가 있는 문자와 공백, 탭, 개행 문자도 입력한다.
int scanf("%c", &c);
여러 문자를 공백으로 구분하여 입력하기 위해서 공백은 무시하고 그 외의 문자만 입력받기 위해서는 %c 앞에 공백이나 \t, \n를 추가한다.
scanf(" %c %c", &ch1, &ch2);
표준 입력 스트림(stdin)인 키보드로부터 하나의 문자를 입력받는 함수
int getchar(void); // 함수 원형
getchar() 함수와 마찬가지로 표준 입력 스트림(stdin)인 키보드로부터 하나의 문자를 입력받는 함수
하지만 getchar() 함수와는 달리 문자를 입력받을 스트림을 인수로 전달하여 직접 지정할 수 있다.
따라서 키보드뿐만 아니라 파일을 통해서도 문자를 입력받을 수 있다.
int fgetc(FILE *stream);
표준 출력 스트림(stdout)인 모니터에 하나의 문자를 출력하는 함수
int putchar(int c);
putchar() 함수와 마찬가지로 표준 출력 스트림(stdout)인 모니터에 하나의 문자를 출력하는 함수
하지만 putchar() 함수와는 달리 문자를 출력할 스트림을 인수로 전달하여 직접 지정할 수 있다.
따라서 모니터뿐만 아니라 파일을 통해서도 문자를 출력(저장)할 수 있다.
int fputc(int c, FILE *stream);
EOF 발생할 때까지 입력받고 출력하는 예제
#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");
}
getchar() 함수와 마찬가지로 하나의 문자를 읽어서 반환하는 함수이지만 버퍼를 사용하지 않는다.
int _getch(void);
putchar() 함수와 마찬가지로 하나의 문자를 출력하는 함수이지만 버퍼를 사용하지 않는다.
void _putch(int c);
#include <stdio.h>
#include <conio.h>
int main() {
int ch;
while((ch = _getch()) != 'q')
_putch(ch);
}
문자열을 읽어서 문자배열 s[]에 저장하는 함수
공백을 만날 때까지만 입력을 받는다.
int scanf("%s", s);
배열 s[]에 저장되어 있는 문자열 출력
int printf("%s", s);
한 줄의 문자열을 읽어서 문자 배열 s[]에 저장하는 함수
마지막 \n까지 저장된다.
하지만 특정 환경에서는 에러가 발생할 수 있음
-> fgets() 함수를 사용하자
char *gets_s(char *s, int size);
키보드뿐만 아니라 파일에서도 문자열을 입력받을 수 있는 함수
char *fgets(char * restrict s, int n, FILE * restrict stream);
첫 번째는 입력받는 문자열을 저장하기 위해 선언한 배열의 시작 주소,
두 번째는 입력받을 수 있는 문자열의 최대 길이('\0' 포함),
마지막은 문자열을 입력받을 스트림을 전달
배열 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);
}