배열과 문자열 - C

한준수·2023년 6월 15일
0

C-Lang

목록 보기
2/12

📖 배열

C언어에서 문자열을 사용하기 위해선 배열이 필수적이다.

📌배열을 사용하는 이유

  • 배열은 여러 개의 변수를 나란히 연결하는 개념이다.

⌨ 배열의 선언 및 초기화 방법

int aa[4];

aa = {1, 2, 3, 4, 5}; 

배열을 선언하고 초기화 하지 않으면 각 배열에 아무것도 넣지 않았기 때문에 쓰레기 값이 들어간다.

✍ 배열 활용 범위

  • 배열의 첨자가 순서대로 변할 수 있도록 반복문과 함께 활용해야만 배열의 효율성이 극대화 된다.

    배열은 for문과 항상 짝지어 다닌다고 보면 된다.

    배열의 인덱스는 0부터 시작해서 "전체 길이 - 1 이다."

⌨ for문과 배열활용 예제

#include<stdio.h>

void main(){
	int aa[100], bb[100];
    int i;
    
    for(i = 0; i < 100; i++){
    	aa[i] = i * 2;
    }
    
    for(i = 0; i < 100; i++){
    	bb[i] = aa[99-i];
    }
    
    printf("bb[0]는 %d bb[99]는 %d 입력됨\n", bb[0], bb[99]);
}

📌 배열의 크기 알아내기 - sizeof()

배열의 크기를 알아낼 때는 아래와 같은 형식을 사용한다.

배열의 크기(요소 개수) = sizeof(전체 배열 이름) / sizeof(배열의 데이터 형식);

배열의 크기 = sizeof(aa) / sizeof(int);

⌨ 예제

#include<stdio.h>

void main(){
	int aa[] = {10, 20, 30, 40, 50};
    int count;
    
    count = sizeof(aa) / sizeof(int);
    
    printf("배열 aa[]의 요소의 개수는 %d 입니다.", count);
}

📖 C언어의 문자열

C언어는 String 데이터 타입을 지원하지 않는다.

C 언어에서의 문자열은 연속된 문자의 문자형 배열이며, 마지막에는 문자열의 끝을 알리는 널문자 \0의 자리를 계산하여 '문자열의 길이 + 1'을 하여 배열을 생성해야 한다.

⌨ 예제

#include<stdio.h>

void main(){
	char ss[8] = "Basic-C"; // 널문자 포함 길이 8
    int i;
    
    ss[5] = '#'; // 여섯번째 문자를 바꿈
    
    for(i = 0; i < 8; i++){
    	printf("ss[%d] ==> %c \n",i, ss[i]);
    }
    
    printf("문자열 배열 ss ==>\n",s);
}

💻 결과


📖 문자열 함수

📌 #include<string.h>

C언어에서 문자열 관련 함수를 사용하기 위해서는 string.h 를 포함하는 지시문을 작성해야 한다.

📌 문자열의 길이 - strlen()

⌨ strlen() 예제

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

void main(){
	char ss[] = "XYZ";
    int len;
    
    len = strlen(ss);
    
    printf("문자열 \"%s\"의 길이 ==> %d \n", ss,len);
}

💻 출력 결과

📌 문자열 복사 - strcpy()

strcpy() 함수는 이미 선언된 문자열 배열에 다른 문자열을 대입하고 싶을 때 주로 사용된다.

⌨ 예제

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

void main(){
	char ss[4];
    
    strcpy(ss, "XYZ");
    
    printf("문자열 ss의 내용 ==> %s\n", ss);
}

💻 출력 결과

📌 문자열을 이어주는 - strcat()

⌨ 예제

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

void main(){
	char ss[7] = "XYZ";
    
    strcat(ss, "ABC");
    
    printf("이어진 문자열 ss의 내용 ==> %s \n", ss);
}

💻 출력 결과

📌 두 문자열을 비교하는 - strcmp()

strcmp() 함수는 두 문자열을 비교해서 같으면 0, 다르면 그 외의 숫자를 돌려준다 (0 이외의 값은 두 문자열의 아스키 코드 값 차이를 나타냄)

⌨ 예제

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

void main(){
	char ss[] = "XYZ";
    char tt[] = "xyz";
    int r;
    
    r = strcmp(ss, tt);
    
    printf("두 문자열의 비교 결과 ==> %d \n", r);
}

💻 출력 결과


📃퀴즈

  • 구구단 결과를 2차원 배열(int gugu[9][9])에 저장한 후 출력하는 프로그램을 작성
    • 실행결과

#include<stdio.h>

void main(){
	int gugu[8][9];
    for(int i = 0; i < 8; i++){
    	for(int j = 0; j <9; j++){
        	gugu[i][j] = (i+2)*(j+1);
        }
    }
    
    for(int i = 0; i < 9; i++){
    	for(int j = 0; j < 8; j++){
        	printf("%d X %d = %d\t", j + 2, i + 1,gugu[j][i]);
        }
        printf("\n");
    }
}

0개의 댓글