ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • C언어_11장
    Computer Sci‧ence/C 2014. 2. 17. 09:51
    반응형

    1. 배열

    배열이라는 문법적 요소는 여러 개의 변수를 동시에 생성할 수 있는 특징을 지닌다. 


    int                     array[10];

    배열요소자료형    배열이름,배열길이


    배열의 길이를 선언할 때는 반드시 상수를 사용해야한다. 

    array[0]

    array[1] ...에서 안에 1은 인덱스를 말한다. 

    ------------------------------------------

    배열 사용 예제

    ------------------------------------------

    double total;

    double val[5]; 


    val[0] = 1.01;

    val[1] = 2.02;

    val[2] = 3.03;

    val[3] = 4.04;

    val[4] = 5.05;


    total = val[0] + val[1] + val[2] + val[3] + val[4];


    printf("average: %lf\n", total / 5);

    -----------------------------------------------


    배열 선언과 동시에 초기화 하기


    int arr1[5]={1,2,3,4,5};  //생성과 동시에 초기화

    int arr2[ ]={1,3,5,7,9,};  //초기화 리스트 항목의 수를 통해 배열 크기 결정

    int arr3[5]={1,2,};          //인덱스 0의 배열요소부터 시작해서 차례로 값을 초기화 해주고, 초기화 할 값이 없는 요소들은 0으로 초기화 하게된다. 


    짝수번째 위치에 존재하는 배열의 요소를 출력하려면 홀수를 인덱스 값으로 사용해야 할 것이다. 



    2. 문자열

    문자열도 변수로 선언하는 것이 가능하다. 



    char str1[5] = "Good";    //문자열 배열수 명시적 선언 4개의 수인데 왜 +1? 일까? '문자열'의 끝에는 null

    문자가 자동적으로 삽입되기 때문이다. 

    char str2[] = "morning"; //자동 계산되도록 선언


    printf("%s \n", str1);   //문자열을 출력하기 위한 %s

    printf("%s %s\n",str1, str2); 

    return 0;


    2.1 문자열 변수의 특징과 널(null) 문자에 대한 이해. 

    문자열의 마지막을 구별하기 위해서 null문자를 만들어 내었고, '\0'이며 아스키 코드값 0에 해당한다. null문자는 아무런 출력도 보이지 않는다. 

    문자열을 변경할 때 주의사항은 '아무리 문자열의 앞 뒤 순서를 바꾼다 하더라도, 널(null)문자까지 그 순서를 바꿔버려서 널 문자가 앞으로 가게 해서는 절대 안된다는 것이다. 


    *****

    결론적으로 문자열 상수건, 문자열 변수건, 그것이 문자열이라면 반드시 널 문자를 마지막에 포함해야 한다. 널 문자가 포함되어 있지 않은 문자열은 문자열이 아니라 단순히 문자 배열이라고 포현해야한다. 



    즉, char arr1[]= {'a','b','c'} 라는 선언을 통해서 얻게 되는 arr1은 문자열이 아니다. 단순히 문자 배열이다. 
    하지만 char2[]={'a','b','c',\'0'}이라는 선언을 통해서 얻게 되는 arr2는 문자 배열이다. 

    ---------------------------------------------------------------------------
    예제: 문자열 변경하기
    ---------------------------------------------------------------------------
    #include <stdio.h>

    int main(void)
    {
    int i;
    char ch;
    char str[6] = "Hello";
    printf("--변경 전 문자열--\n"); 
    printf("%s \n", str);

    for (i = 0; i < 6; i++)
    printf("%c |",str[i]);

    //문자열 변경
    for (i = 0; i < 3; i++)
    {
    ch = str[4 - i];
    str[4 - i] = str[i];
    str[i] = ch;
    }
    printf("\n--변경 후 문자열--\n");
    printf("%s\n", str);

    return 0;

    }
    -----------------------------------------------------------------------------
    예제: scanf함수를 이용해서 문자열 입력받기
    -------------------------------------------------------------------------
    #include <stdio.h>

    int main(void)
    {
    char str[100] = "Hello";
    printf("--문자열 입력: "); 
    scanf("%s", str); //문자열의 입력에서는 &로 변수를 저장하지 않는다. 이 개념은 포인터의 개념을 잡으면서 해결되는데, 일단은 문자열을 입력받을 때는 &를 붙이지 않는다고 기억하기 바란다. 

    printf("입력된 문자열: %s\n", str);

    return 0;

    }
    ----------------------------------------------------------------------------------

    ----------------------------------------------------------------------------------
    연습문제 1번
    ----------------------------------------------------------------------------------

    #include <stdio.h>


    int main(void)

    {

    char str[100];

    int i,cnt = 0;


    printf("--문자열 입력: "); 

    scanf("%s", str); //문자열의 입력에서는 &로 변수를 저장하지 않는다. 이 개념은 포인터의 개념을 잡으면서 해결되는데, 일단은 문자열을 입력받을 때는 &를 붙이지 않는다고 기억하기 바란다. 



    for (i = 0; str[i] != '\0';i++)

    {

    //printf("%c", str[i]);

    }



    printf("입력된 문자열의 길이: %d\n", i);

    return 0;


    }


    ----------------------------------------------------------------------------------
    연습문제 2번
    ----------------------------------------------------------------------------------
    #include <stdio.h>

    int main(void)
    {
    char str[100];
    int i, ii, j;
    char ch;

    printf("--문자열 입력: "); 
    scanf("%s", str); //문자열의 입력에서는 &로 변수를 저장하지 않는다. 이 개념은 포인터의 개념을 잡으면서 해결되는데, 일단은 문자열을 입력받을 때는 &를 붙이지 않는다고 기억하기 바란다. 


    for (i = 0; str[i] != '\0';i++)
    {
    //printf("%c", str[i]);
    }

    ii = i / 2;

    for (j = 0; j <= ii; j++);
    {
    ch = str[ii - 1];
    str[ii - j] = str[j];
    str[j] = ch;
    }
    printf("입력된 문자열의 길이: %d\n", i);
    printf("뒤집음 :%s\n",str);
    return 0;

    }
    --------------------------------------------------------------------------------------------------------
    예제3
    --------------------------------------------------------------------------------------------------------
    #include <stdio.h>

    int main(void)
    {
    char str[100];
    int i, num1, num2,max=0;
    char ch;

    printf("--문자열 입력: "); 
    scanf("%s", str); //문자열의 입력에서는 &로 변수를 저장하지 않는다. 이 개념은 포인터의 개념을 잡으면서 해결되는데, 일단은 문자열을 입력받을 때는 &를 붙이지 않는다고 기억하기 바란다. 


    for (i = 0; str[i] != '\0';i++)
    {
    //printf("%c", str[i]);
    num1 = str[i];
    if (num1 > max)
    max = num1;
    else
    max = max;

    }

    printf("%c\n", max);
    return 0;

    }

    --------------------------------------------------------------------------------------------


    이번장에서 공부한 내용 정리
    1. 1차원 배열에 대해서 살펴보았다. 
    2. 1차원 배열을 이용해서 문자열 변수를 선언하는 방법에 대해서 살펴보았다. 배열도 중요하지만, 문자열도 중요하다. 특히 문자열은 기본적으로 널(null)문자가 자동 삽인된다는 것을 잊지말자.
    3. 배열에 저장된 문자열의 내용을 역으로 뒤집는 코드를 예제를 통해서, 또한 연습문제를 통해서 각각 젯하였다. 


    반응형

    'Computer Sci‧ence > C' 카테고리의 다른 글

    C언어_12장  (0) 2014.02.17
    C언어_10장  (0) 2014.02.14
    C언어_09장  (0) 2014.02.13
    scanf vs. scanf_s "_CRT_SECURE_NO_WARNINGS"  (0) 2014.02.13
    백견이 불여일타요 백타가 불여일작이다!  (0) 2014.02.12

    댓글

Designed by Tistory.