[C 언어] - getchar( )

RuiN·2022년 8월 5일
0

C

목록 보기
1/6
post-thumbnail

이전 String 에서 알게 된것을 토대로 getchar( ) 를 활용해
예제를 하나 해볼까 합니다.


앞뒤 공백 제거

다음과 같은 문자열을 입력합니다.
  
  your     capacity    to    enjoy       life
  
 앞뒤 공백을 제거 하는 로직을 생성하여 아래와 같은 결과를 도출할 것입니다.
 
 your capacity to enjoy life

Logic

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

#define BUFFER_SIZE 80


int read_line_with_compression(char compressed[], int limit);

int main() {
    char line[BUFFER_SIZE];
    while (1) {
        printf("$  ");
        int length = read_line_with_compression(line, BUFFER_SIZE);
        printf("%s:%d\n", line, length);
    }
    return 0;
};

int read_line_with_compression(char compressed[], int limit) {
//
    int ch, i = 0;
    while ((ch = getchar()) != '\n') {
        if (i < limit - 1 && (!isspace(ch) || i > 0 && !isspace(compressed[i - 1])))
            compressed[i++] = ch;
    }

    if (i > 0 && isspace(compressed[i - 1]))
        i--;
    compressed[i] = '\0';
    return i;

}
  • buffer-size 가 80 인 line 배열을 선언합니다.
  • read_line_with_compression 함수를 선언합니다.
    • getchar( ) 를 활용해 줄바꿈이 입력될때까지 문자를 입력받습니다.
    • isspace ( ) 를 활용하여 공백이 있는지를 체크하고 공백을 제거합니다.
    • 그리고 맨 뒤의 공간을 isspace( ) 를 활용해 파악하고,
      문자열 맨끝을 '\0' 로 마무리 지어줍니다.
  • 그다음 i 를 리턴받아 입력된 문자열을 공백을 제거한 상태로
    출력하고, 문자열의 길이를 length로 받아 출력합니다.

Result

$   your     capacity    to    enjoy       life
  your capacity to enjoy life:27

위와 같은 결과가 도출 됩니다.

profile
어디까지 올라갈지 궁금한 하루

0개의 댓글