반응형
C언어에서 문자열은 단순한 문자의 나열이 아닌 포인터로 연결된 배열입니다.
이번 강의에서는 strcpy, strlen, strcmp 등의 문자열 처리 함수와
문자열 포인터의 원리를 실전 예제로 이해해봅니다.
🔤 C언어에서 문자열이란?
C언어 문자열은 char 배열에 널 문자('\0')가 끝에 붙은 형식입니다.
char str1[] = "Hello";
char *str2 = "World";
- str1: 배열 방식으로 메모리에 저장됨
- str2: 문자열 상수를 가리키는 포인터
📌 문자열 주요 함수 소개 (string.h)
함수 기능
strlen() | 문자열 길이 반환 |
strcpy() | 문자열 복사 |
strcat() | 문자열 연결 |
strcmp() | 문자열 비교 |
strchr() | 문자 검색 |
strstr() | 문자열 검색 |
📘 strlen() – 문자열 길이 구하기
#include <string.h>
int len = strlen("Apple"); // 5
- 널 문자('\0') 이전까지의 길이 계산
- 공백도 포함, 단 \0은 제외
📘 strcpy() – 문자열 복사
char dest[20];
strcpy(dest, "Banana"); // dest = "Banana"
❗ 버퍼 크기 초과 주의 (버퍼 오버플로우 위험)
📘 strcmp() – 문자열 비교
strcmp("Apple", "Apple") → 0
strcmp("Apple", "Banana") → 음수
strcmp("Orange", "Banana") → 양수
- 리턴값: 같으면 0, 다르면 양수 또는 음수
📘 strcat() – 문자열 이어 붙이기
char str[20] = "Hello ";
strcat(str, "World"); // str = "Hello World"
- 대상 버퍼는 충분히 커야 함
- 복사+연결이기 때문에 strcpy 이후에 자주 사용됨
🧪 실전 예제: 문자열 입력받아 길이 출력
char name[100];
printf("이름 입력: ");
scanf("%s", name);
printf("길이: %lu\n", strlen(name));
🔄 문자열 포인터 vs 배열 차이
char str1[] = "Hello"; // 배열 (값 복사)
char *str2 = "Hello"; // 포인터 (주소 할당)
구분 배열 방식 포인터 방식
수정 가능 여부 | 가능 | 상수 영역 → 수정 불가 (에러 발생 가능) |
메모리 구조 | 스택에 저장 | 데이터 영역 (읽기 전용) |
💡 문자열 포인터 실습: 사용자 정의 함수 만들기
int my_strlen(const char *s) {
int count = 0;
while (*s++) count++;
return count;
}
✅ *s++ 방식으로 포인터로 순회
✅ 문자열 끝인 \0까지 반복
🎯 실습 과제
- 문자열 입력받아 strlen, strcpy, strcmp 연습
- 포인터 방식으로 my_strcpy, my_strcmp 직접 구현
- 배열과 포인터 방식의 차이점 비교 실험
📘 요약 정리
함수 주요 역할 유의사항
strlen | 문자열 길이 | \0 전까지 계산 |
strcpy | 문자열 복사 | 대상 배열 충분히 커야 함 |
strcmp | 문자열 비교 | 반환값으로 크기 비교 가능 |
strcat | 문자열 합치기 | 기존 문자열의 끝에 이어 붙임 |
🗣 다음 주 예고: 구조체(struct) 기초 – 데이터를 묶는 강력한 방법
다음 강의에서는 C언어의 핵심 데이터 구조인
**구조체(struct)**에 대해 배웁니다.
실제 프로그램에서 다양한 데이터 유형을 함께 묶어 다루는 방법을 소개합니다.
반응형
'C언어 > C 언어 중급' 카테고리의 다른 글
중급8강_C언어 파일 입출력 완벽 가이드 – fopen부터 fprintf까지 (3) | 2025.04.23 |
---|---|
중급7강_C언어 구조체(struct) 기초 완벽 정리 – 데이터를 묶는 강력한 방법 (0) | 2025.04.21 |
중급5강_C언어 함수 포인터 완전정복 – 콜백 함수의 핵심 개념 쉽게 배우기! (0) | 2025.04.21 |
중급4강_C언어 포인터 배열과 2차원 배열 완전정복 – 메모리 구조 깊이 파헤치기! (0) | 2025.04.21 |
중급3강_C언어 동적 메모리 할당 완벽 가이드 – malloc부터 free까지 한 번에! (0) | 2025.04.20 |