문자열은 C에서 다양한 문자표현을 나타내기 위해 사용한다. 내부적으로 문자열은 char자료타입의 배열로 이루어져있으며 이것은 포인터와 같다고 할 수 있다.
영문같은 경우 알파벳 1개당 1byte의 크기를 가지며 한글같은 경우 글자 1개당 2byte의 크기를 가진다.
이것은 array의 크기가 10개의 문자가 들어갈 수 있는 공간이라고 했을때 영문은 10자, 한글은 5자 들어갈 수 있다.
배열은 선언 후 배열 몇번쨰의 값의 메모리 주소 자체가 배열 자체가 된다. 이런 의미에서 배열은 포인터라고 할 수 있다. array[1]에서 5의 값이 들어있다면 &array[1]은 해당 값이 들어있는 곳의 주소를 말한다. = 포인터
1001 개 만큼의 문자가 들어갈 수 있는 하나의 문자열 input변수를 만든다. gets(input)은 문자를 입력하고 엔터를 쳤을 때 엔터를 치기 전까지 입력한 문자를 input에 넣게된다.
\0 은 null 을 의미한다. C언어에는 문장의 끝을 나타내는 null 문자가 존재한다. 문장을 쓰면 저절로 포함이 된다. 입력이 된후 남의 모든 공간은 자동으로 null 값이 들어가게 하는 C언어의 약속이다.
예를 들어 hello world 라고 입력하면 우리의 눈에는 hello world만 보이지만 컴퓨터 입장에서는 hello world\0이라고 입력되어 보이는 것이다.
10개의 배열공간이 있을 때 gets로 사용자 입력값을 받았을 때 ABCDE를 받으면 0~4번째까지 입력을 받으며 문자열이 끝난 5번째자리부터 null값이 된다.
즉 count를 계속 증가시키면서 null 값을 만날때까지 반복하는 것이다. A - B - C - D - E
strlen() 함수는 문자열 라이브러리 string.h 에서 가져온 것이다.
strcmp 함수를 이용해 inputOne과 inputTwo의 사전적인 순서를 비교하는 코드이다. A와 B를 비교하면 -1이 나옴으로써 A가 사전적으로 앞에있음을 의미한다. A와 A를 비교하면 0, B와 A를 비교하면 1이 나오게 된다.
strcpy는 문자열을 복사해주는 기능이다. result는 5개 배열을 할당했음에도 불구 input의 11개 배열을 result 자리에 복사한 것을 볼 수 있는데 strcpy는 내부적으로 포인터를 다루는 함수이며 문자 관련 포인터를 다룸으로써 글자가 더 적더라도 복사가 가능하게 해준다.
이 글은 프로그래머 나동빈님의 강의 내용을 개인적인 학습을 목적으로 정리하여 쓴 글임을 밝힙니다.