풀스택개발자될거임

[Do it C언어 입문 정리] 12.배열과 문자열 본문

C/do it C언어 입문

[Do it C언어 입문 정리] 12.배열과 문자열

FullStack_dev178 2023. 2. 11. 15:13

배열이란

데이터를 그룹으로 묶어주는 문법

int student_1 = 0;
int student_2 = 0;
int student_3 = 0;
.
.
.
int studen_100 = 0;

이걸 

int student[100];

for(int i = 0; i < 100; i++)
    student[i] = 0;

이렇게 바꿔줌

 

배열 선언 및 사용

자료형 변수이름[요소개수];

 

예를들어

short age[100];

라고 선언하면

2byte(short 크기) 크기의 변수가 100개( age[0] ~ age[99] )를 생성한 것과 같음.

그래서 age 변수는 총 200byte 크기로 만들어짐.

 

특정 요소에 값을 넣고 싶다면

배열이름[인덱스] = 값;

이렇게 하면 됨

예시

age[0] = 20;

age 첫번째 요소에 20을 넣음

 

배열 초기화

for문으로 초기화 할 수 있음

short age[20];

for(int i = 0; i < 20; i++)
	age[i] = 0;

 

근데 사실 for문 안써도 됨ㅋㅋ

short age[20] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
short age[20] = {0,};

1번째 2번째 같은 코드임

요소 개수 생략도 가능

short age[] = {0,0,0,0,0};

 

주의할점

short age[5] = {3,}; /* short age[5] = {3,0,0,0,0}; 랑 같음 */

 

 


문자열

만약 "Hello" 라는 문자열을 저장하려면 어떻게 저장해야할까? 

data1 ~ data5 를 만들어서 알파벳 하나하나 저장하면 할 수 있겠지만, 문장이 길어지면 힘들어질것이다.

이때 위에서 배운 배열을 이용하면 간단히 해결할 수 있다.

char data[6] = {'H','e','l','l','o',0};

이때 0을 추가로 입력하여 , 이 정보는 문자열이라는 것을 컴파일러에게 알려준다.

하지만 문자 하나하나 입력하는 것은 불편하기 때문에 우리는 이렇게 나타낼 수 도 있다.

char data[6] = "Hello";
char data2[] = "World";

이렇게 하면 0이 자동으로 추가 된다. 그리고 []안에 숫자를 생략해도 문자열 크기에 맞춰서 자동으로 크기가 맞춰진다.

출력하는법

char st[] = "Hello World";

printf("%s",st);

%s를 사용한다.

 

문자열 길이 구하기

while을 이용하여 구할 수 있다.

char data[] = "Hello";
int count = 0;

while(data[count] != 0) count++;

printf("%d\n",count);

 

아니면 string.h 내장함수를 이용해서 구할 수 있다.

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

int main()
{
    char data[] = "Hello";
    int count = 0;

    count = strlen(data);

    printf("%d\n",count);

    return 0;
}

strlen()  : 괄호안의 문자열 길이를 구해준다.

strcpy(a,b) : a에 b문자열을 복사한다.

strcat(a,b) : a와 b를 연결시켜서 리턴한다.


 

2차원 배열

2차원 배열 선언 방법

자료형 변수명[num][num];

char data[5][4];

4열 5행 배열이 만들어짐

초기화 방법

char data[5][4] = {0,};