-
(C언어) 11. 문자열(심화)C언어 문서화 2016. 4. 6. 02:56반응형
http://sunrinnote.tistory.com/6
문자열의 기초는 이 위에 설명되어 있다.
포인터를 조금 배운 시점에서 조금 설명을 보태자면,
만약 포인터 형 변수 ptr이 문자열 arr[]을 가리키고 있다면, 그것은 곧 arr[0]을 가리키고 있다는 것과 같다.
1234char arr[]="abcde";int *ptr;//ptr=&arr;//ptr=&arr[0];cs 주석처리한 3번, 4번 라인은 같은 말이다. 포인터는 항상 배열의 첫번째 자리를 가리키는데, 문자열도 배열과 같은 개념이므로 포인터의 사용도 동일하다.
이번에는 문자열을 가지고 놀아보자.
문자열을 가지고 어떻게 놀아볼까?
문자열 길이 재기?
문자열 복사하기?
문자열 비교하기?
좋다 이정도면 문자열을 가지고 놀아볼 수 있겠다.
<<아래 나오는 strlen, strcpy, strcmp는 모두 #include <string.h>을 해야 쓸 수 있습니다.>>
1. strlen
strlen은 string length의 줄임말이다. 한마디로 문자열의 길이를 알려주는 함수이다.
문자열의 길이를 알려 줄 때, 공백을 포함하면서 '\0'을 만나기 전까지의 문자열 길이를 알려준다.
쓰는 방법은 아주 간단하다. (아래의 결과는 문자열 길이를 출력한다.)
printf("%d", strlen(문자열변수의 이름));
간단간단 하다.
직접 코드로 짜보면,
12345678#include <stdio.h>#include <string.h>int main(){char arr[]="count me";printf("%d", strlen(arr));}cs 출력 결과는 8이다.
2. strcpy
strlen이 string length이었다. 그럼 strcpy는 무엇의 약자일까?
그렇다. string copy, 즉 문자열 복사이다.
그럼 어떻게 해야 문자열이 복사될까~?
문자열의 복사는 다음과 같이 쓴다.
strcpy([복사한값을 담을 곳], [복사할 곳]);
이것도 매우~ 심플하다.
직접 코드로 짜보면,
12345678910#include <stdio.h>#include <string.h>int main(){char arr1[100];char arr2[]="copy me!";strcpy(arr1, arr2);printf("%s", arr1);}cs 분명 arr1에는 아무 값도 없었다.
하지만 strcpy를 하면서 arr2에 있는 값이 arr1로 복사되었다.
따라서 arr1을 출력 하면 arr2에 있던 값, "copy me!"가 출력되는 것이다.
3. strcmp
strcmp는 string compare의 약자이다.
두 개의 문자열을 비교하는 것이다.
비교한 두 문자열 중 앞의 것이 문자열 길이가 더 작다 : 음수(-1)출력
비교한 두 문자열 중 앞의 것이 문자열 길이가 더 크거나 같다 : 양수 출력
비교한 두 문자열이 같다. : 0출력
다음과 같이 쓴다 :
printf("%d", strcmp([비교할 문자열1], [비교할 문자열2]));
코드를 보자.
12345678#include <stdio.h>int main(){char arr1[100]="abcddd";char arr2[100]="abcdda";printf("%d", strcmp(arr1, arr2));}cs 결과 : 3(양수)
반응형'C언어 문서화' 카테고리의 다른 글
(C언어)13.구조체 (0) 2016.04.27 (C언어) 12. 동적할당 (0) 2016.04.06 (C언어) 10. 포인터_1 (0) 2016.03.28 (C언어) 9. 다차원 배열 (0) 2016.03.27 (C언어) 8. 정렬 방식 (0) 2016.03.25