일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 장고
- 프로그래밍
- docker
- 기초강의
- cpp
- airflow
- 에어플로우 기초강의
- Django
- C언어
- 파이썬
- 예제프로젝트
- 파이썬 장고
- 개발언어
- mlops
- 개발자취업
- 장고 튜토리얼
- ADP
- 쇼핑몰예제
- 도커 컴포즈
- c
- 파이썬강의
- 도커
- Python
- 개발자
- 장고 기초 강의
- 플라스크
- c++
- 웹개발
- 인공지능
- flask
- Today
- Total
TITEDIOS 편한 코딩
C 기초강의: #13 배열과 문자열 - 기초 개념과 활용 방법 본문
C언어의 기본 자료형 중 하나인 배열(Array)과 이를 이용해 처리할 수 있는 문자열(String)은 필수적인 개념입니다. 이 포스팅에서는 배열과 문자열의 기초 개념을 살펴보고, 이를 어떻게 활용할 수 있는지 설명하겠습니다.
목차
- C언어에서의 배열이란?
- 배열의 특징과 주의사항
- C언어에서의 문자열
- 문자열 처리 함수들
- 결론
1. C언어에서의 배열이란?
배열은 동일한 데이터 타입의 여러 값을 연속된 메모리 공간에 저장하는 자료구조입니다. 배열을 사용하면 여러 변수를 개별적으로 선언하지 않고도 한꺼번에 관리할 수 있습니다. 예를 들어, 10명의 학생 점수를 저장해야 한다면, 10개의 변수를 각각 선언하는 대신 int scores[10];과 같이 배열을 선언할 수 있습니다.
10개의 int 자료형을 가진 배열은 메모리 공간에서 연속적으로 할당됩니다. 위의 그림에서처럼 한꺼번에 쭉 할당되게 됩니다.
#include <stdio.h>
int main() {
int scores[5] = {90, 85, 78, 92, 88}; // 크기가 5인 정수형 배열 선언 및 초기화
for(int i = 0; i < 5; i++) {
printf("Student %d: %d\n", i+1, scores[i]);
}
return 0;
}
위 예제에서 scores 배열은 5명의 학생 점수를 저장하며, 인덱스를 통해 각 요소에 접근할 수 있습니다. C언어의 배열 인덱스는 0부터 시작합니다.
2. 배열의 특징과 주의사항
- 고정된 크기: C언어의 배열은 선언 시 크기가 고정됩니다. 배열의 크기를 동적으로 변경할 수 없으므로, 적절한 크기를 미리 결정해야 합니다.
- 메모리 연속성: 배열의 요소들은 메모리에 연속적으로 배치되며, 첫 번째 요소의 주소를 기준으로 인덱스가 계산됩니다. 이로 인해 인덱스를 사용한 접근이 매우 빠릅니다.
- 배열의 경계: 배열의 인덱스가 배열의 크기를 초과하면, 메모리 접근 오류가 발생할 수 있습니다. 이는 버그의 주요 원인이 될 수 있으므로, 배열 인덱스의 범위를 항상 신경 써야 합니다.
3. C언어에서의 문자열
C언어에서 문자열은 문자(char)들의 배열로 표현됩니다. 다른 언어에서 제공하는 고수준의 문자열 자료형과 달리, C언어의 문자열은 사실상 문자의 배열에 불과합니다. 중요한 점은 문자열의 끝을 알리는 널 문자(\0)가 필요하다는 것입니다.
#include <stdio.h>
int main() {
char greeting[] = "Hello, World!"; // 문자열 초기화
printf("%s\n", greeting); // 문자열 출력
return 0;
}
위 예제에서 greeting 배열은 "Hello, World!"라는 문자열을 저장합니다. 문자열의 마지막에는 자동으로 널 문자가 추가되어, C언어에서 문자열의 끝을 나타냅니다.
4. 문자열 처리 함수들
C언어 표준 라이브러리에는 문자열을 처리하기 위한 여러 함수들이 있습니다. 이들 함수는 <string.h> 헤더 파일에 정의되어 있으며, 자주 사용되는 몇 가지를 소개합니다.
- strlen: 문자열의 길이를 계산합니다. 널 문자를 제외한 길이를 반환합니다.
- strcpy: 한 문자열을 다른 문자열로 복사합니다.
- strcat: 두 문자열을 연결합니다.
- strcmp: 두 문자열을 비교합니다. 같으면 0을, 다르면 0이 아닌 값을 반환합니다.
int length = strlen(greeting); // 문자열의 길이를 계산
char copy[20];
strcpy(copy, greeting); // 문자열 복사
strcat(greeting, " How are you?"); // 문자열 연결
int result = strcmp(greeting, "Hello, World!"); // 두 문자열을 비교
5. 배열과 문자열의 활용 예제
배열과 문자열을 이해했으니, 이를 활용한 간단한 예제를 살펴보겠습니다. 사용자로부터 문자열을 입력받아, 각 문자의 빈도를 세는 프로그램을 작성해보겠습니다.
#include <stdio.h>
#include <string.h>
int main() {
char str[100];
int freq[256] = {0}; // 모든 ASCII 문자의 빈도를 저장할 배열
printf("Enter a string: ");
gets(str); // 문자열 입력 받기
for(int i = 0; i < strlen(str); i++) {
freq[(int)str[i]]++; // 해당 문자의 빈도 증가
}
printf("Character frequencies:\n");
for(int i = 0; i < 256; i++) {
if(freq[i] > 0) {
printf("%c: %d\n", i, freq[i]);
}
}
return 0;
}
이 프로그램은 사용자가 입력한 문자열에서 각 문자의 빈도를 계산하여 출력합니다. 문자열 입력은 gets 함수를 사용해 받았으며, 각 문자의 ASCII 값을 인덱스로 사용하는 freq 배열에 빈도를 저장합니다.
결론
C언어에서 배열과 문자열은 기본적이면서도 매우 중요한 개념입니다. 배열은 동일한 유형의 데이터를 효율적으로 저장하고 관리할 수 있게 해주며, 문자열은 이러한 배열을 활용해 텍스트 데이터를 처리할 수 있게 해줍니다. 배열과 문자열을 잘 이해하고 활용하면 C언어로 더 복잡한 프로그램을 쉽게 작성할 수 있습니다.
추가로, C언어의 배열과 문자열에 대한 연습을 통해 기초를 다지면, 실제 프로그래밍에서 발생할 수 있는 다양한 상황에 대비할 수 있습니다.
도움이 되셨다면 공감 부탁드리겠습니다. 여러분의 공감이 정말 큰 힘이 됩니다.
감사합니다!
'C++' 카테고리의 다른 글
C 기초강의: #14 포인터 - 포인터 기초 개념 및 사용 방법 (2) | 2024.09.01 |
---|---|
C 기초강의: #12 함수 - 함수 작성 방법 및 가이드 (4) | 2024.08.25 |
C 기초강의: #11 조건문 - if (0) | 2024.08.24 |
C 기초강의: #10 반복문 - for, while (0) | 2024.08.18 |
C 기초강의: #9 비트마스킹 - 비트연산자의 활용 (0) | 2024.08.17 |