우리의 IT
C 언어 - 1차원 배열, 2차원 배열, 문자열 동시 사용 본문
✅ C 언어 - 1차원 배열, 2차원 배열, 문자열 동시 사용
✔ 1차원 배열 → 같은 자료형의 데이터를 연속된 메모리에 저장
✔ 2차원 배열 → 행과 열로 구성된 배열
✔ 문자열 → char 배열을 사용하여 저장
🔹 1. 1차원 배열과 문자열 사용
📌 문자열 배열을 선언하여 여러 개의 문자열 저장 가능
#include <stdio.h>
int main() {
char words[3][10] = {"apple", "banana", "cherry"}; // 3개의 문자열 저장
for (int i = 0; i < 3; i++) {
printf("%s\n", words[i]); // 각 문자열 출력
}
return 0;
}
✅ 출력
apple
banana
cherry
🔹 2. 2차원 배열을 활용한 문자열 입력 및 출력
📌 여러 개의 문자열을 사용자 입력으로 받아 저장할 수 있음
#include <stdio.h>
int main() {
char names[3][20]; // 최대 3개의 이름 저장 가능
printf("3명의 이름을 입력하세요:\n");
for (int i = 0; i < 3; i++) {
scanf("%s", names[i]); // 문자열 입력
}
printf("\n입력한 이름:\n");
for (int i = 0; i < 3; i++) {
printf("%s\n", names[i]); // 입력한 이름 출력
}
return 0;
}
✅ 출력 예시
3명의 이름을 입력하세요:
Alice
Bob
Charlie
입력한 이름:
Alice
Bob
Charlie
⚠️ 주의: scanf()는 공백 포함 문자열을 입력받지 못함 → fgets() 사용 필요
🔹 3. fgets()로 공백 포함 문자열 입력
#include <stdio.h>
int main() {
char sentences[3][50]; // 3개의 문장 저장 가능
printf("3개의 문장을 입력하세요:\n");
for (int i = 0; i < 3; i++) {
fgets(sentences[i], sizeof(sentences[i]), stdin); // 공백 포함 입력 가능
}
printf("\n입력한 문장:\n");
for (int i = 0; i < 3; i++) {
printf("%s", sentences[i]); // 입력한 문장 출력
}
return 0;
}
✅ 출력 예시
3개의 문장을 입력하세요:
Hello, world!
C programming is fun.
Let's learn together.
입력한 문장:
Hello, world!
C programming is fun.
Let's learn together.
✔ fgets()는 개행 문자(\n) 포함 → 필요시 제거 가능
🔹 4. 문자열 정렬 (strcmp 활용)
📌 여러 개의 문자열을 사전순으로 정렬
#include <stdio.h>
#include <string.h>
int main() {
char words[5][20] = {"banana", "apple", "cherry", "grape", "mango"};
char temp[20]; // 정렬을 위한 임시 변수
// **버블 정렬 알고리즘 사용**
for (int i = 0; i < 4; i++) {
for (int j = i + 1; j < 5; j++) {
if (strcmp(words[i], words[j]) > 0) { // 사전순 비교
strcpy(temp, words[i]);
strcpy(words[i], words[j]);
strcpy(words[j], temp);
}
}
}
printf("\n정렬된 단어 목록:\n");
for (int i = 0; i < 5; i++) {
printf("%s\n", words[i]);
}
return 0;
}
✅ 출력
정렬된 단어 목록:
apple
banana
cherry
grape
mango
✔️ strcmp()로 문자열을 비교하여 정렬
🔹 5. 2차원 배열과 문자열을 활용한 검색 기능
📌 입력한 단어가 배열에 존재하는지 검색
#include <stdio.h>
#include <string.h>
int main() {
char words[4][20] = {"apple", "banana", "grape", "orange"};
char search[20];
int found = 0; // 검색 결과 저장
printf("검색할 단어를 입력하세요: ");
scanf("%s", search);
for (int i = 0; i < 4; i++) {
if (strcmp(words[i], search) == 0) { // 일치하는 단어 찾기
found = 1;
break;
}
}
if (found) {
printf("'%s' 단어가 목록에 있습니다.\n", search);
} else {
printf("'%s' 단어가 목록에 없습니다.\n", search);
}
return 0;
}
✅ 출력 예시
검색할 단어를 입력하세요: banana
'banana' 단어가 목록에 있습니다.
검색할 단어를 입력하세요: melon
'melon' 단어가 목록에 없습니다.
✔ strcmp()를 사용하여 문자열 검색
🚀 정리
✅ 1차원 배열 + 문자열
✔️ char 배열[개수][문자열 크기] 형태로 선언 가능
✔️ 여러 개의 문자열을 저장하고 활용할 수 있음
✅ 2차원 배열 + 문자열
✔️ char 배열[행][열] 형태로 여러 개의 문자열 저장 가능
✔️ fgets()를 사용하면 공백 포함 입력 가능
✔️ strcmp()를 이용하여 문자열 정렬 및 검색 가능
✅ 문자열 관련 주요 함수
함수 기능
| strlen(str) | 문자열 길이 반환 |
| strcpy(dest, src) | 문자열 복사 |
| strcat(dest, src) | 문자열 연결 |
| strcmp(str1, str2) | 문자열 비교 |
| fgets(str, size, stdin) | 공백 포함 문자열 입력 |
✅ 배열과 문자열을 동시에 활용하면 다양한 프로그램을 구현할 수 있습니다! 🚀
'정보처리기사' 카테고리의 다른 글
| C언어 - 표준함수 (0) | 2025.03.27 |
|---|---|
| C언어 - 함수 (0) | 2025.03.27 |
| C 언어 - 1차원 배열 & 2차원 배열 (0) | 2025.03.26 |
| C언어 - 반복문 (0) | 2025.03.26 |
| C언어 - 조건문 (0) | 2025.03.26 |