ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 4. 배열과 문자열
    Programming Language/C 2020. 1. 31. 16:59

    배열

    배열(array)은 동일한 종류의 데이터를 일련의 구조화된 집단으로 메모리에 구성한 것이다. 즉, 동일한 자료형을 동시에 여러 개 선언할 때 배열을 사용한다. int a[10]; 과 같이 선언된 배열 a가 있다고 하자. 이 문장은 int형의 변수 10개를 동시에 선언한 것으로, 배열명은 a이고 원소는 10개라는 의미이다. int형은 일반적으로 4바이트의 크기를 가지므로, a[0]부터 a[9]까지 10개의 정수를 수용할 수 있는 메모리 40바이트가 연속적으로 할당된다.

     

    문자와 아스키코드

    #include <stdio.h>
    
    int main(void)
    {
        int a = 65;
        char b = 65;
      
        printf("%c %c", a, b);
    	
        return 0;
    }
    A A

    C언어는 문자를 아스키코드의 숫자로써 인식하기 때문에, printf()로 출력 형식을 문자형(%c)로 지정하여 숫자를 출력할 경우, 그 숫자에 해당하는 문자가 출력된다. 아스키코드 65번에 해당하는 문자는 알파벳 대문자 'A'이므로 위의 코드의 실행 결과 A가 두번 출력된다.

     

    #include <stdio.h>
    
    int main(void)
    {
        int a = 'A';
        char b = 'A';
      
        printf("%d %d", a, b);
    	
        return 0;
    }
    65 65

    반대로, 정수형 변수를 문자로 초기화해도 정수형 변수에는 그 문자의 아스키코드가 저장된다. 따라서 printf()로 출력 형식을 정수형(%d)으로 지저아여 문자를 출력하여도, 그 문자에 해당하는 숫자가 출력된다. 알파벳 대문자 'A'의 아스키 코드는 65이므로 위의 코드 실행 결과 65가 두번 출력된다.

     

    문자열

    char str1[] = {'a', 'b', 'c', 'd', 'e', '\0'};
    
    char str2[] = "abcde";

    문자열은 문자(char)형의 데이터를 원소로 가지는 배열이다. 위의 char형의 배열 str1과 str2는 완전히 동등한 값을 표현한다. 배열 str1의 끝부분을 잘 보면, '\0'이 있다. 이와같이 문자열의 마지막의 원소는 항상 문자열이 끝남을 나타내는 null표시로 ‘\0’이 들어간다.

     

    배열과 조건문, 반복문을 활용해보기 위한 연습 문제로, 숫자와 알파벳이 섞인 문자열에서 소문자만 출력하는 프로그램을 만들어보자. 반복문을 통해 cnt번째의 원소가 ‘\0’이 되는 것을 탈출 조건으로 하여 문자열의 길이 만큼 원소인 문자들을 검사할 수 있다. 컴퓨터는 char형의 각 문자를 아스키코드의 숫자로서 인식하기 때문에, if() 조건문을 통해 cnt번째의 검사할 원소가 a의 아스키코드 값과 z의 아스키코드 값 사이에 포함이 되는지를 판별하여 참이면 그 원소를 출력시킴으로써 문제를 해결할 수 있다.

     

    #include <stdio.h>
    
    int main(void)
    {
        char array[] = "1 a C b D O z";
    
        int i;
    	
        for (i = 0; array[i] != '\0'; i++)
        {
            if('a'<=array[i] && array[i]<='z')
            {
                printf("%c", array[i]);
            }
        }
    		
        return 0;
    }

    'Programming Language > C' 카테고리의 다른 글

    5. 포인터  (0) 2020.01.31
    3. if-else, for, while  (0) 2020.01.31
    2. 버퍼와 getchar()  (0) 2020.01.31
    1. 자료형과 표준 입출력 함수  (0) 2020.01.31
    0. Hello C!  (0) 2020.01.31

    댓글

Designed by Tistory.