자 또 string.h 나오니까 생각나시죠? 또 엄청나게 배울 게 있다는 걸... 네. 저도 싫지만 이번 거 엄청 길겠네요. 그런데 중요해서 꼭 들으셔야 합니다. 일단 string.h에서는 아주 많은 함수들이 내장되어 있지만(아마 한 100개쯤?) 이 중에서 가장 중요한 것은 이렇게 5개입니다.
strcpy, strcat, strcmp, strchr, strlen
이렇게 5개인데요, 이 5개는 여러가지 역할을 합니다. 아마 들으시고 나면, '저런 함수들이 있었으면 나는 지금까지 반복문 돌리면서 뭐한거지?'라는 생각이 들 거에요. 저도 물론 들었고요. 일단 string.h를 삽입합니다. 전이랑 똑같이 #include <string.h>로 선언하시면 되고요, 제가 하나 하나 설명해드리겠습니다.
strcpy(char* s1, const char* s2)는 다른 배열로 모든 원소(배열 안에 변수들을 원소라고 합니다)들을 복사합니다. 예시는 다음과 같습니다.
char str1[] = "programmer", str2[11]; strcpy(str2, str1); puts(str1); puts(str2); /* result: programmer programmer */
이처럼 strcpy는 strcpy(붙여넣기 할 배열, 복사할 배열); 형태로 선언합니다.
strcat(char* s1, const char* s2)는 한 배열에 다른 배열을 이어 붙이는 함수입니다. 예시는 다음과 같습니다.
char dest[30] = "C ", source[30] = "programmer"; strcat(dest, source); puts(dest); // retsult: C programmer
이처럼 strcat는 strcat(배열, 앞 배열에 붙여질 배열); 로 선언할 수 있습니다.
strcmp(const char* s1, const char* s2)는 배열 2개를 대소문자로 비교하는 함수입니다. 예시는 다음과 같습니다.
char str1[] = "programmer", str2[] = "Programmer"; printf("%d", strcmp(str1, str2)); // result: -1
여기에서 strcmp는 strcmp(배열1, 배열2); 로 선언할 수 있습니다. 만약 앞 배열이 크다면 1, 같다면 0, 같지 않다면 -1을 출력하는데, 주로 두 문자열이 같은 지 아닌 지 확인할 때 씁니다.
strchr(const char* s, int c)는 배열에서 특정 문자를 찾습니다. 예시는 다음과 같습니다.
char strTemp; char string[] = "This is a good car!"; strTemp = strchr(string, 'a'); printf("%s \n", strTemp); strTemp = strchr(string, 'c'); printf("%s", strTemp); /* result: a good car! car! */
이처럼 strchr은 그 문자를 찾으면 그 부분 전에를 끊습니다. strchr(배열, 찾으려고 하는 문자의 ASCII)로 정의할 수 있습니다. 여기에서 ASCII는 int형인데 그냥 char로 입력해도 자동으로 int로 변환시켜줍니다.
마지막으로, strlen(const char* s)은 문자의 수(NULL 제외)를 세주는 함수입니다. 이건 소스코드를 안 써도 이건 아실 수 있겠죠? 아마 이게 가장 활용이 많이 될 것이라 생각합니다.
와... 엄청 기네요... 외우실 필요 없습니다. 이해하시고 넘어가시면 됩니다. 그런데 외우고 계시면 아주 편리하겠죠?