• 프로그래밍 언어 활용 part 2 - 문자 처리 라이브러리

    2021. 8. 8.

    by. 고구마달랭이

     

    문자 처리 라이브러리

    학습내용 학습목표
    ▪ 문자 문자열 입출력
    ▪ 문자 문자열 처리함수
    ▪ 문자와 문자열 입출력 함수를 알고 활용할 수 있다.
    ▪ 문자와 문자열을 처리하는 함수를 활용할 수 있다.

    문자 문자열 입출력

     

    1. 문자 관련 입출력 함수

    [1] 라이브러리

    ☞ 문자 입출력 라이브러리를 활용

    ☞ scanf(“%c”,&ch), printf(“%c”, ch); / getc(); putc(); / _getch(); _getche(); _putch(); / getchar(); putchar();

     

    [2] getc() putc()

    ☞ int getc( FILE *stream ); 

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

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

    ☞ int putc( int ch, FILE *stream );

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

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

     

    ▪ 기본 스트림(stream) : stdin / stdout / stderr

     

    [3] _getch() _getche() _putch()

     

    [4] getchar() putchar()

     

     

    2. 문자열 관련 입출력 함수

    #include <stdio.h>
    int main()
    {
    	char a[5];
    	gets(a);
    	puts(a);
    	return 0;
    }

     

    #include <stdio.h>
    int main()
    {
    	char a[5];
    	get_s(a,5);
    	puts(a);
    	return 0;
    }

     


     

    문자 문자열 처리함수


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

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

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

    ☞ isalpha(), islower, isupper()

    ☞ strlen(), strcpy(), strcmp()

     

     

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

    [1] isalpha()

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

    ☞ int isalpha( int ch );

    ☞ 헤더파일 : ctype.h

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

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

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

     

     

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

    #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을 리턴

    ☞ 1989년 ANSI C 발표

     

     

    Q. 문자 배열에서 소문자의 개수를 구하시오

    #include <stdio.h>
    #include <ctype.h>>
    
    int main()
    {
    	int i,cnt=0;
    	char a[20]="Good Night";
    	for(i=0 ; i<20 ; i++)
    {
    		if( islower(a[i]) )
    			cnt++;
    }
    printf("문자배열에서 소문자의 갯수는 %d 개 입니다.",cnt);
    return 0;
    }

     

     

    [3] strlen()

    헤더파일 : string.h

    size_t strlen( const char *str );

    문자열에서 null 전까지의 길이를 리턴

     

    [4] strcpy()

    헤더파일 : string.h

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

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

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

    #include <stdio.h>
    #include <string.h>>
    
    int main()
    {
    	char a[20]="Good Night", b[20];
    	strcpy(b,a);
    	puts(b);
    	strcpy(b,"Hello");
    	puts(b);
        
    	return 0;
    }

     

    [5] strcmp()

    헤더파일 : string.h

    int strcmp( const char *lhs, const char *rhs );

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

    ☞ 동일하면 0을 리턴

    ☞ lhs가 크면 양수, rhs가 크면 음수를 리턴

    #include <stdio.h>
    #include <string.h>>
    
    int main()
    {
    	char a[20]="Good Night";
    	if(!strcmp(a,"Good Morning"))
    		printf("Same");
    	else
    		printf("Different");
            
    	return 0;
    }

     

     


     

     

    학습정리

     

    1. 문자 문자열 입출력

    ▪ 문자를 입력받을 때 사용 가능한 표준 C 라이브러리 함수로 getc(), getchar() 가 있음

    ▪ 문자를 출력할 때 사용 가능한 표준 C 라이브러리 함수로 putc(), putchar() 가 있음

    ▪ 버퍼를 사용하지 않는 입력 라이브러리 함수로 _getch(), _getche() 가 있음

    ▪ getche()는 에코(echo)를 사용하여 사용자가 입력한 내용을 화면에 보여줌

    ▪ 문자열을 입력받는 표준 라이브러리 함수는 gets(), gets_s()가 있음

     

    2. 문자 문자열 처리함수

    ▪ 대표적인 문자나 문자열을 처리하는 라이브러리 함수를 선언한 헤더파일은 ctype.h와 string.h가 있음

    ▪ isalpah()는 알파벳 문자 여부를 판단하여 리턴함

    ▪ strlen() 함수는 문자열에서 null을 제외한 문자열의 길이를 리턴함

    ▪ strcpy()함수는 null을 포함하여 복사함

    ▪ strcmp()함수는 동일한 경우 0을 리턴함

    댓글