-
1. 문자열 길이 구하기
문자열은 문자가 여러 개 모여있으므로 당연히 길이가 존재합니다.
문자열의 길이를 구할 때 우리는 strlen 함수를 사용합니다.
12345678910111213#include <stdio.h>#include <string.h> // strlen 함수가 선언된 헤더 파일int main(){char *s1 = "공상개발"; // 포인터에 문자열 "공상개발"의 주소 저장char s2[20] = "공상개발"; // 크기가 20인 char형 배열을 선언하고 문자열 할당printf("%d\n", strlen(s1)); // strlen 함수로 문자열의 길이를 구함printf("%d\n", strlen(s2)); // strlen 함수로 문자열의 길이를 구함return 0;}cs # 한글은 2byte, 영어는 1byte
2. 문자열 비교하기
strcmp 함수를 사용하면 두 문자열이 같은지 비교할 수 있습니다.
1234567891011121314151617181920212223242526272829#include <stdio.h>#include <string.h> // strcmp 함수가 선언된 헤더 파일int main(){char s1[20];char s2[20];printf("문자열 두 개를 입력하세요: ");scanf("%s %s", s1, s2);int ret = strcmp(s1, s2); // 입력된 문자열 비교printf("반환값: %d\n", ret);if (ret == 0){printf("두 문자열이 같음\n");}else if (ret > 0) // 양수일 때{printf("%s보다 %s가 큼\n", s2, s1);}else if (ret < 0) // 음수일 때{printf("%s보다 %s가 큼\n", s1, s2);}return 0;}cs 3. 문자열 복사하기
문자열은 다른 배열이나 포인터(메모리)로 복사할 수 있습니다.
이때, strcpy 함수를 통해 문자열을 다른 곳으로 복사할 수 있습니다.
123456789101112131415#define _CRT_SECURE_NO_WARNINGS // strcpy 보안 경고로 인한 컴파일 에러 방지#include <stdio.h>#include <string.h> // strcpy 함수가 선언된 헤더 파일int main(){char s1[15] = "공상개발"; // 크기가 15인 char형 배열을 선언하고 문자열 할당char s2[15]; // 크기가 15인 char형 배열을 선언strcpy(s2, s1); // s1의 문자열을 s2로 복사printf("%s\n", s2); // 공상개발return 0;}cs 4. 문자열 붙이기
문자열은 strcat 함수를 사용하여 서로 붙일 수 있습니다.
123456789101112131415#define _CRT_SECURE_NO_WARNINGS // strcat 보안 경고로 인한 컴파일 에러 방지#include <stdio.h>#include <string.h> // strcat 함수가 선언된 헤더 파일int main(){char s1[15] = "공상";char s2[30] = "개발"; // s2 뒤에 붙일 것이므로 배열 크기를 크게 만듦strcat(s2, s1); // s2 뒤에 s1를 붙임printf("%s\n", s2); // 공return 0;}cs 5. 문자열 검색하기
# 문자열 안에서 문자로 검색하기
문자열 검색은 포인터의 개념을 이해하고 있어야 돼서 넣지 않으려고 했지만 예습 차원으로 넣어봤습니다.
strchr 함수를 사용하면 문자열에서 특정 문자로 검색할 수 있습니다.
1234567891011121314151617#include <stdio.h>#include <string.h> // strchr 함수가 선언된 헤더 파일int main(){char s[20] = "tistory"; // 크기가 20인 char형 배열을 선언하고 문자열 할당char *temp = strchr(s, 't'); // 't'로 시작하는 문자열 검색, 포인터 반환while (temp != NULL) // 검색된 문자열이 없을 때까지 반복{printf("%s\n", temp); // 검색된 문자열 출력teno = strchr(temp + 1, 't'); // 포인터에 1을 더하여 a 다음부터 검색}return 0;}cs 6. 문자열 자르기
문자열을 자르는 함수는 strtok입니다.
123456789101112131415161718#define _CRT_SECURE_NO_WARNINGS // strtok 보안 경고로 인한 컴파일 에러 방지#include <stdio.h>#include <string.h> // strtok 함수가 선언된 헤더 파일int main(){char s1[20] = "공상 개발"; // 크기가 20인 char형 배열을 선언하고 문자열 할당char *temp = strtok(s1, " "); // " " 공백 문자를 기준으로 문자열을 자름, 포인터 반환while (temp != NULL) // 자른 문자열이 나오지 않을 때까지 반복{printf("%s\n", temp); // 자른 문자열 출력temp = strtok(NULL, " "); // 다음 문자열을 잘라서 포인터를 반환}return 0;}cs 프로그램 구현 시 자른 문자열을 사용하는 경우가 많습니다.
예를 들어 문자열을 자른 뒤 코드를 실행하고, 자른 문자열을 사용한다든지 다양한 상황이 생길 수 있습니다.
문자열 보관은 문자열 포인터 배열에 보관할 수 있습니다.
12345678910111213141516171819202122232425262728#define _CRT_SECURE_NO_WARNINGS // strtok 보안 경고로 인한 컴파일 에러 방지#include <stdio.h>#include <string.h> // strtok 함수가 선언된 헤더 파일int main(){char s[20] = "공상 개발"; // 크기가 20인 char형 배열을 선언하고 문자열 할당char *sTemp[10] = { NULL, }; // 크기가 10인 문자열 포인터 배열을 선언하고 NULL로 초기화int i = 0; // 문자열 포인터 배열의 인덱스로 사용할 변수char *temp = strtok(s1, " "); // 공백 문자열을 기준으로 문자열을 자름while (temp != NULL) // 자른 문자열이 나오지 않을 때까지 반복{sTemp[i] = temp; // 문자열을 자른 뒤 메모리 주소를 문자열 포인터 배열에 저장i++; // 인덱스 증가temp = strtok(NULL, " "); // 다음 문자열을 잘라서 포인터를 반환}for (int i = 0; i < 10; i++){if (sTemp[i] != NULL) // 문자열 포인터 배열의 요소가 NULL이 아닐 때만printf("%s\n", sTemp[i]); // 문자열 포인터 배열에 인덱스로 접근하여 각 문자열 출력}return 0;}cs 'Language > C 튜터링' 카테고리의 다른 글
8. C - 튜터링 프로젝트 결과물 _Rev.F (0) 2021.05.26 6. C - 배열 (0) 2021.05.17 5. C - 함수_Rev.1 (0) 2021.05.06 4. C - 반복문, 조건문 활용 문제 (0) 2021.04.09 3. C - 조건문 & 반복문 (0) 2021.03.31 댓글