Notice
Recent Posts
Recent Comments
Link
«   2026/05   »
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
Tags
more
Archives
Today
Total
관리 메뉴

우리의 IT

C 언어 - 1차원 배열, 2차원 배열, 문자열 동시 사용 본문

정보처리기사

C 언어 - 1차원 배열, 2차원 배열, 문자열 동시 사용

우리의 IT 2025. 3. 26. 22:28

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