개인공부/C

자료구조 연습문제 복습

5ddish 2018. 7. 2. 17:44

이 문제는 배열의 있는 문자열의 공백을 제고하고, 문자열의 갯수를 세어주는 프로그램임 


|| 연산자랑 && 연산자랑 햇갈려서 잠깐 고민했음 

잠깐임

잠깐

아주잠깐


#include <stdio.h>

#include <string.h>


void compress_line(char str[]);


int main()

{

    char str[] = " Is it fun   !";

    compress_line(str);

    printf("%s: %d \n",str, strlen(str));

}


void compress_line(char str[])

{

    int i =0, j=0;

    char compressed[100];

    char prev = '\0';

    

    while(str[i] == ' ') //앞부분의 공백 제거

        i++

        

        while(str[i] != '\0') //str배열의 값이 \0이 아닐때까지 반복해라 -> 배열의 끝까지 반복해라

        {

            if(str[i] != ' ' || prev != ' ') // 만약 str[i] 가 공백이 아니거나 prev 가 공백이 아니라면

            {

                compressed[j] = str[i]; // str[i] 번째에 있는 값을 compressed[j] 에 대입해라

                j++; // 그리고 j 를 증가시켜 다음 글자를 받을 준비를 해라

            }

            prev = str[i];

            i++;

        }

    if(prev == ' ')

        j--;

    

    compressed[j] = '\0';

    

    strcpy(str, compressed);

}