Notice
Recent Posts
Recent Comments
Link
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Tags more
Archives
Today
Total
관리 메뉴

냥집사의 개발일지

C언어 - 배열 (Array) : 문자 배열의 선언 & 초기화 본문

C언어

C언어 - 배열 (Array) : 문자 배열의 선언 & 초기화

깅햄찌 2022. 9. 6. 20:46
반응형

 

안녕하세요~ 오늘은 문자 배열에 대해서 정리해보려 합니다.

저번 포스팅에서는 일반 정수 배열에 대해 정리해두었으니 참고해주세요~

 

2022.09.05 - [C언어] - C언어 - 배열 (Array) : 배열의 선언 & 초기화

 

C언어 - 배열 (Array) : 배열의 선언 & 초기화

안녕하세요~ 오늘은 배열에 대해서 정리해보려 합니다. C언어를 처음 배울 때 포기하게 되는 부분 중 하나인데요. 알기 쉽게 예제를 보며 공부해봅시다~ 1. 배열의 선언 아래 코드처럼 배열을 선

leggo-fire.tistory.com

 

그럼 지금부터 알기 쉽게 예제를 보며 공부해봅시다~

 

1. 문자 배열의 선언

 

아래 코드처럼 문자 배열을 선언하기 위해서는 일반 정수 배열과 같이

"자료형 배열 이름[배열 크기]"를 적어주면 됩니다. 

char arr[5];     // data type : char, array name : arr, array size : 5

 

2. 문자 배열의 선언 및 초기화

2가지의 문자 배열을 초기화하는 방법이 있습니다.

2.1 선언한 문자 배열에 문자열 상수로 초기화하기

char str[6] = "apple";     // data type : char, array name : str, array size : 6

 

2.2 선언한 문자 배열에 문자 상수로 따로따로 초기화하기

char str[6] = {'a','p','p','l','e'};     // data type : char, array name : str, array size : 6

 

(중요!!)문자 배열을 선언 및 초기화할 때 주의해야 하는 점이 있는데요.

바로 문자열 끝에는 무조건 널문자를 저장해주어야한다는 것입니다. 

(널문자는 문자열의 끝을 나타내는 것이므로 만약 널문자가 없으면 문자열이

메모리에 출력될 때 임의의 널문자를 만날때까지 출력되기 때문에 메모리 낭비가 발생합니다. )

#include <stdio.h>

int main(){
    char str[] = "Hello";     // data type : char, array name : str, array size : 10
    printf("str[5] : %c\n", str[5]);
    printf("str[5] : %d\n", str[5]); //ASCII 0 == NULL
    str[5] = '!';
    printf("%s\n", str); //print as a string type
    return 0;
}

 

str 배열을 초기화해 준 순간 str[5]에는 널문자가 들어간 것을 확인할 수 있습니다.

(NULL 문자의 ASCII 코드 : 0)

str[5]에 널문자 이외의 임의의 문자를 할당해주면 Compiler는 문자열의 끝을 알 수 없으므로

쓰레기 값을 출력하게 됩니다. 

 

3. 문자 배열 관련 함수

 

3.1 strcpy : 문자열 복사 함수

string.h 헤더 파일에 선언되어 있습니다.

strcpy 함수 원형 : strcpy(para1, para2)

para2의 문자열이 para1으로 복사되는 기능의 함수입니다.

#include <stdio.h>
#include <string.h>

int main(){
    char str1[10];    
    char str2[10];

    strcpy(str1,"Hello");   // allocate Hello into str1
    strcpy(str2, str1);     // allocate str1 into str2
    printf("%s, %s\n", str1, str2);
    return 0;
}

str1, str2 모두 Hello가 할당된 것을 확인할 수 있습니다~

 

3.2  gets: 문자열 입력 함수

gets함수 원형 : gets(para)

Enter('\n')를 입력의 끝이라고 간주하는 문자열 입력 함수입니다. 

(scanf는 Enter, Tab, Space 모두 입력의 끝이라고 간주)

 

3.3  puts: 문자열 출력 함수

puts함수 원형 : puts(para)

문자열'만' 출력할 수 있는 출력 함수입니다. 

(printf는 문자열, 정수, 문자 모두 출력할 수 있는 출력 함수)

#include <stdio.h>

int main(){
    char str[10];    
    
    printf("Input string :");
    gets(str);
    printf("str : ");
    puts(str); 
    return 0;
}

gets 함수로 문자열을 입력받고 puts함수로 문자열을 출력한 것을 확인할 수 있습니다~

 

오늘은 문자 배열의 선언 및 초기화 또한 문자 배열과 관련된 몇 가지 함수들을 알아보았습니다!! 

다음 포스팅에서는 배열의 영원한 친구 포인터에 대해 정리해보려 합니다!

그럼 좋은 하루 보내세요~

Comments