프로그래밍 언어 공부/C

문자 처리 라이브러리

CalebHong 2022. 1. 12. 19:49

문자 관련 입출력 함수

getc() putc()

int getc( FILE *stream);

 - 지정한 스트림으로 부터 문자 읽기

 - 입력문자 ASCII코드 값을 리턴, 오류 시에는 EOF 리턴

int putc(int ch, FILE *stream);

 - 지정한 스트림에 지정한 값을 출력

 - 정상 출력 시 출력문자 리턴, 오류 시는 EOF 리턴

 

_getch() _getche() _putch() (conio.h에 포함)

int _getch(void); int _getche(void);

 - 키보드로부터 입력되는 문자를 읽음

 - 입력 문자의 ASCII코드를 리턴

 - _GETCHE() 는 echo를 사용

 - 버퍼를 사용하지 않는 입력

int _putch(int ch);

 - 화면에 지정한 값을 출력

 - 정상 출력 시 출력문자 리턴, 오류 시 EOF 리턴

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

int main()
{
    char a;
    a = _getch(); // 버퍼 사용하지 않기에 키보드를 누르면 바로 처리
    _putch(a);
    a = _getche(); // 화면에 입력한 내용을 뿌려줌.
    _putch(a);
    return 0;
}

 

getchar() puchar()

int getchar(void);

 - 키보드로부터 입력되는 문자를 일음

 - 입력 문자의 ASCII코드를 리턴

 - 버퍼를 사용하는 입력

int putchar(int ch);

 - 화면에 지정한 값을 출력

 - 정상 출력 시 출력문자 리턴, 오류 시 EOF 리턴

#include <stdio.h>

int main()
{
    char a;
    a = getchar();
    putchar(a);
    return 0;
}

 

문자열 관련 입출력 함수

gets() gets_s() puts()

char *gets(char *str);

char *gets_s(char *str, rsize_t n); // 입력받을 수 있는 최대 갯수 지정 가능

 - 키보드로부터 입력되는 문자들을 \n까지 읽어서 str에 입력

 - "\n"을 null로 변환하여 저장

int puts(char *str);

 - 화면에 지정한 문자열을 출력

 - null(\0)을 \n으로 변환하여 출력

 - 정상 출력 시 음수가 아닌 값을 리턴, 오류 시 EOF 리턴

 

문자, 문자열 처리 관련 라이브러리

- 헤더파일 : ctype.h string.h

- isalpha(), islower(), isupper()

- strlen(), strcpy(), strcmp()

- http://en.cppreference.com/w/c/string/byte

 

Null-terminated byte strings - cppreference.com

A null-terminated byte string (NTBS) is a sequence of nonzero bytes followed by a byte with value zero (the terminating null character). Each byte in a byte string encodes one character of some character set. For example, the character array {'\x63','\x61'

en.cppreference.com

 

자주 사용하는 함수 이용하기

1. isalpha()

if (('A' <= ch && 'Z' >= ch) || ('a' <= ch && 'z' >= ch))

int isalpha(int ch);

- 헤더파일: ctype.h

- 인수가 알파벳 문자인지를 확인

- 알파벳문자이면 0이 아닌 값을 리턴

- 알파벳문자가 아니면 0을 리턴

 

ex) 문자배열에서 알파벳문자가 아닌 첫 번째 글자의 위치를 찾으시오.

#include <stdio.h>
#include <ctype.h>

int main()
{
    int i, cnt = 1;
    char a[20] = "Good Night";
    for(i=0; i<20; i++)
    {
    	if(!isalpha(a[i]) break;
        cnt++;
    }
    printf("알파벳문자가 아닌 첫번째 글자는 %d번째 입니다.", cnt);
    return 0;
}

 

2. islower() isupper()

int islower(int ch); // 인수의 문자가 소문자이면 0이 아닌 값, 그 외이면 0을 리턴

int isupper(int ch); // 인수의 문자가 대문자이면 0이 아닌 값, 그 외이면 0을 리턴

- 헤더파일: ctype.h

 

3. strlen()

size_t strlen(const char *str);

- 헤더파일: string.h

- 문자열에서 null(/0) 전까지의 길이를 리턴

ex) HELLO/0 -> 5

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

int main()
{
    char a[20] = "Good Night";
    printf("문자열의 길이는 %d 개 입니다.", strlen(a));
    return 0;
}

 

4. strcpy()

char *strcpy(char *dest, const char *src);

- 헤더파일: string.h

- null 문자를 포함하여 src의 문자열을 dest로 복사

- src 문자열의 길이가 dest 문자 배열의 크기보다 크면 실행 에러가 발생할 수 있음

cf) error_t *strcpy_s(char *dest, size_t sizedest, const char *src);

 - sizedest에 복사할 최대 문자수(dest의 크기를 기술)

 - 함수 성공 시 0, 그 외 오류번호를 리턴

 

5. strcmp()

int ctrcmp(const char *lhs, const char *hrs);

- 헤더파일: string.h

- null 문자 전까지 각 문자를 비교

- 동일하면 0을 리턴, 다르면 1을 리턴 (주의할 점)

- lhs가 크면 양수 rhs가 크면 음수를 리턴

 

'프로그래밍 언어 공부 > C' 카테고리의 다른 글

수학 관련 라이브러리  (0) 2022.01.13
도서관리 시스템 구현  (0) 2022.01.13
라이브러리(Library)  (0) 2022.01.12
어플리케이션 최적화(Application Optimization)  (0) 2022.01.12
디버깅(Dubugging)  (0) 2022.01.11