본문 바로가기

programming language/C 언어

배열과 포인터의 연관 및 다양한 문자열 함수

문자열은 c언어에서 다양한 문자 표현을 나타내기 위해 사용한다.

내부적으로 문자열은 char자료 타입의 배열로 이루어져 있으며 이것은 포인터와 같다고 할 수 있다
즉, 배열은 내부적으로 포인터와 동일한 구조이다.

 

char array[10];이 선언된 후 10개 바이트만큼 우리 메모리에 자리 잡았다고 생각하면 된다.

 

#include <stdio.h>
int main(void)
{
char input [1001];
gets(input);   
int count = 0;               
while (input [count]!= '\0')
{
count++;
}
printf("입력한 문자열의 길이는% d입니다", count);  //문자열의 길이 맞는 표현 ㅇ
printf("입력한 문자열은 % s입니다.", input);
return 0;
}

 

예를 들어, char str [100] = "       ";이 있다면 문자열의 길이는 100보다 작다!

(이 문장에서  문자열의 시작이 str [0]이고, 문자열의 끝에는 널문자가 삽입되어있다.)

예를 들어 char arr [ ] = {'a', 'p', 'p', 'l', 'e', '\0'}의 문장이 있다 하면, 이는 널문자가 있기 때문에 문자 배열이 아닌 문자열이 저장된 배열(문자열)이라 할 수 있고, 이 문자열 즉 배열의 길이는 6이고, 문자열의 길이는 apple 즉 5이다. 널 문자가 문자열인지 아닌지 가리는 요소가 되지만, 문자열의 길이에는  관여되지 않는다. 배열의 길이에 관여가 된다.

 

gets(input);  가 의미하는 바는  input이라는 char 배열 안에 그다음으로

사용자가 입력하는 문자열이 엔터를 칠 때까지 들어가는 것을 의미한다.


strlen(스트링 렝쓰) 문자열 길이 계산 함수

 

#include <stdio.h>
#include <string.h>  //c언어에서 제공하는 헤더 파일 , 문자열 관련한 각종 함수를 제공하는 하나의 라이브러리

int main(void)

{

char input [5] = "Love";

printf("문자열의 길이: % d\n", strlen(input));   //strlen(스트링 렝쓰) 문자열 길이 계산 함수

return 0;

}

출력 값은 4.


strcmp(스트링 cmp, 문자열 비교 함수)

 

#include <stdio.h>

#include <string.h>

int main(void)

{

char inputOne [5] = "A";
char inputTwo [5] = "B";
printf("문자열 비교 : % d\n", strcmp(inputOne, inputTwo)); 
return 0;
}

 

strcmp(inputOne, inputTwo)

둘을 사전적으로 비교해줌. 즉 두 문자가 사전적으로 동일하면 0, 왼쪽이 사전적으로 앞에 있다면 -1.

오른쪽이 앞에있다면 1이라는 숫자 반환. 이 함수는 사전 구현하기, 영단어 암기장 구현하기에 활용되는 함수.


문자열 복제 함수

 

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

int main(void)
{
char input [10] = "I love you";
char result [5] = "Love";
strcpy(result, input);  
printf("문자열 복사: % s\n", result);
return 0;
}

 

strcpy(result, input);  스트링 카피 함수로 인해 리설트라는 문자열 안에 인풋 카피 가능해진다.

 

printf("문자열 복사: % s\n", result);의 출력 결과를 통해,

result는 총 5개 들어갈 수 있는 공간만을 할당했음에도 불구하고, "I love you"라는 총 10개의 더 긴 숫자가 할 당 됐음을 볼 수 있다

 

strcpy함수는 내부적으로 포인터 다루는 함수라 할 수 있는데, 문자 관련 포인터 다룸으로써 글자가 더 적다고 하더라도 순식간에 복사 가능.

 

 

-동빈나 유튜브 채널의 도움을 받아 부족한 부분을 보완해 나가는 중이다.-