티스토리 뷰

C

문자열(string)

stdlib.h 2016. 4. 5. 23:48

문자열이란 말그대로, 문자들의 모임이다.


예를 들자면 , A는 문자이고 B도 문자이다.

하지만 A와B가 모여 AB가 된다면, 문자가 모였으므로 문자열이 된다.


이처럼, C에서는, 문자열을 문자를 저장하는 변수의 모임은

char 형 배열로 표현한다.


선언은 다음과 같다.


char arr[10] = "abcd";

해도 되고

char arr[10] = {'a', 'b', 'c', 'd', '\0'};

해도 좋다.

다만, "abcd" 와 달리,

밑의 방법은 \0 이라는 문자또한 추가시켜주었는데

이를 NULL문자 라고 한다.

위의 방법은 NULL문자가 자동으로 추가된다.

하지만 아래의 방법은 원소를 하나씩 초기화 해주기때문에, 직접 추가해 주어야한다.



이 NULL문자가 필요한 이유는,

문자열을 출력할때 어디까지가 끝인지 알기위해서 이다.


만약 배열은 10칸이 있는데, 문자가 5개라면, 5개만 출력하고 종료해야한다.

이때, 5개를 출력하다가 NULL문자를 만나면, 여기가 문장의끝이구나! 하고 출력을 종료한다.

즉, 만약 char str[100] = "abcde";

가 있다면.

str[0]의 a부터 str[4]의 e 까지 출력하다가 str[5] 에 있는 NULL문자를 만나면

종료한다.



문자열을 입력받는 방법에는 scanf("%s", char형배열의이름);

이 있으나, 이는 공백까지 입력받진 못한다.

그래서 gets(배열이름);

을 사용하거나 scanf에 입력받을때 옵션을 사용하면 되지만, gets를 쓰자.




다음은 char* arr = "abcd";

와 char str[5] = "abcd";

의 차이점이다.

arr 은 포인터로써 abcd 를 가르키고있고,

str은 배열로써 abcd 의 값을 가지고있다.

즉, arr은 상수로써 abcd 를 가르키고 있다는 말이고,

str은 배열로 그 값을 복사하여 배열의 각칸에 넣었기때문에, 다르다.

간단히 예시를들자면,


*arr = 'c'; 는 오류가 나고,

*str = 'c' 는 오류가 나지않는다.

왜냐하면, arr은 그 문자열 상수가 있는주소를 가르키기 때문에 변경이 불가하고,

str은 배열의 값을 바꾸는것이므로 오류가 나지 않는다.


'C' 카테고리의 다른 글

swap!  (0) 2016.04.10
배열에 데이터들을 입력하여 특정값을 특정값으로 치환하기.  (0) 2016.04.07
포인터만사용해서..!  (0) 2016.04.05
strlen구현  (0) 2016.04.04
strcpy구현  (0) 2016.04.04
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/03   »
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
31
글 보관함