기출문제/정보처리기사

2022년 2회 정보처리기사 기출문제 61번

엉클지니 2025. 2. 26. 21:47

61. C언어에서 문자열 처리 함수의 서식과 그 기능의 연결로 틀린 것은?

    strlen(s) - s의 길이를 구한다.

    strcpy(s1, s2) - s2s1으로 복사한다.

     strcmp(s1, s2) - s1s2를 연결한다.

    strrev(s)s를 거꾸로 변환한다.

 

<해설>

C언어 문자열 처리 함수의 기능과 연결 오류 찾기

정답: ③ strcmp(s1, s2) - s1과 s2를 연결한다. (❌ 틀린 설명)


각 선택지 분석 및 올바른 설명

  1. ① strlen(s) - s의 길이를 구한다. ✅ (올바른 설명)
    • strlen() 함수는 문자열 s의 길이를 반환합니다.
    • 문자열의 길이는 널 문자(\0)를 제외한 문자 개수입니다.
    #include <stdio.h>
    #include <string.h>
    
    int main() {
        char str[] = "Hello";
        printf("Length: %d\n", strlen(str));  // 출력: Length: 5
        return 0;
    }
    
    • 문자열 "Hello"의 길이는 5 (\0 제외).
    • strlen()은 문자열의 크기가 아닌 문자 개수를 반환합니다.

  1. ② strcpy(s1, s2) - s2를 s1으로 복사한다. ✅ (올바른 설명)
    • strcpy() 함수는 문자열 s2의 내용을 s1에 복사합니다.
    #include <stdio.h>
    #include <string.h>
    
    int main() {
        char source[] = "World";
        char destination[10]; // 충분한 크기 필요
        
        strcpy(destination, source);
        printf("Copied String: %s\n", destination);  // 출력: Copied String: World
    
        return 0;
    }
    
    • 주의: s1의 크기가 충분하지 않으면 버퍼 오버플로우가 발생할 수 있습니다.
    • 더 안전한 함수로 strncpy()를 사용하기도 합니다.

  1. ③ strcmp(s1, s2) - s1과 s2를 연결한다.(틀린 설명, strcmp()는 문자열 비교 함수)
    • strcmp() 함수는 두 문자열을 비교하여 결과값을 반환합니다.
    • 반환값:
      • 0 → 두 문자열이 같음
      • 양수(>0) → s1이 s2보다 큼
      • 음수(<0) → s1이 s2보다 작음
    #include <stdio.h>
    #include <string.h>
    
    int main() {
        char str1[] = "apple";
        char str2[] = "banana";
    
        int result = strcmp(str1, str2);
        
        if (result == 0)
            printf("Strings are equal\n");
        else if (result < 0)
            printf("str1 is smaller\n"); // 출력: str1 is smaller
        else
            printf("str1 is larger\n");
    
        return 0;
    }
    
    • 올바른 연결:
      strcmp(s1, s2) → s1과 s2를 비교한다.
    • 문자열 연결(Concatenation) 함수는 strcat()입니다.
      strcat(s1, s2); // s1에 s2를 연결
      

  1. ④ strrev(s) - s를 거꾸로 변환한다. ✅ (올바른 설명, 그러나 표준 라이브러리에 없음)
    • strrev() 함수는 문자열을 뒤집어 반환하는 함수이지만,
      C 표준 라이브러리에는 존재하지 않습니다.
    • Windows (MSVC)에서는 지원되지만, GCC 등에서는 직접 구현해야 합니다.
    #include <stdio.h>
    #include <string.h>
    
    int main() {
        char str[] = "hello";
        printf("Reversed: %s\n", strrev(str));  // 출력: olleh
        return 0;
    }
    
    • GCC에서는 직접 구현해야 함
      void reverseString(char *s) {
          int len = strlen(s);
          for (int i = 0; i < len / 2; i++) {
              char temp = s[i];
              s[i] = s[len - i - 1];
              s[len - i - 1] = temp;
          }
      }
      

결론

함수 기능 설명

strlen(s) 문자열 길이 반환 ✅ 올바른 설명
strcpy(s1, s2) s2를 s1에 복사 ✅ 올바른 설명
strcmp(s1, s2) 문자열 비교 틀린 설명 (연결이 아니라 비교 기능)
strrev(s) 문자열 뒤집기 ✅ 올바른 설명 (표준 함수 아님)

👉 정답: ③번 (strcmp()는 문자열 비교, 연결이 아니라 비교 함수임!)

반응형