#include <stdio.h>

int lineget(char string[]);

void cpspace(char to[], char from[],int);

int main(){
    int len; //문자 길이 받아올 변수
    char string[1000]; //입력 받을 문자열
    char less_space[1000]; //공백 제거 및 탭으로 교환후 다시 넣을 문자열
   
    len = lineget(string); //문자열 입력 및 길이 반환

    cpspace(less_space,string,len); //문자열 공백 제거 및 탭 삽입
    printf("%s ",less_space); // 문자열 출력
    return 0;
}

int lineget (char string[]){
    int c,i ;
    i = 0;
   
    for(i=0;i<999 && (c = getchar())!= EOF && c!=' \n';i++)
        string[i] = c; //getchar 로 입력 받은후 문자열에 저장
    if(c == ' \n'){
        string[i] = '\n ';
        string[i+1] = '\0';
    }
    return i+1; //길이 반환
}

void cpspace(char to[],char from[],int len){//복사 받을 문자열, 복사 할 문자열, 문자열 길이
    int i,j,z,k;
    int counting = 0; //새는 중인지 확인할 플래그
    k = 0;
    j = 0;
    z = 0;
    for(i = 0; i < len; i++){
        if(from[i] == ' '){
            j++; //문자열이 공백이면 j를 늘림
            counting = 1;
        }
        else
            counting = 0; //문자열이 공백이 아닐시 플래그 0
        if(counting == 0){
            for(z = z;z+k < i; z++){ //공백이 아닐시 문자열 복사
                if(z+j+k == i && j >= 4){ //공백이 4칸 이상일시 탭으로 전환
                    to[z] = ' \t';
                    k = k+j-1;
                    j = 0;
                }
                to[z] = from[z+k];
            }
        }
    }
}



코드 전문 이구요 k는 비동기 처리를 위해 임의로 넣은 변수입니다

이것보다 깔끔한 코드가 생각이 안나서요

대충 설계하고 들어가긴했는대 잘안되서 수정하다보니

제가 했지만서도 약간 어떻게 한건가 싶고 얼떨떨하네요

확인한번씩 해보시고 충고 및 조언 부탁드립니다.


// 전문은  PRO 가 아니라 전체 라는 말입니다 


주석 추가 및 코드 약간 수정했습니다.