본문 바로가기
개념/C

strlen, strcpy, strcat

by pon9 2024. 10. 22.

프로그래머스 0레벨 '접두사인지 확인하기' 문제이다. 이 문제를 풀 때 내가 생각한 조건들은,

1. is_prefix의 길이가 my_string 보다 길다면 접두사가 될 수 없다.

2. is_prefix[i] 와 my_string[i] 가 같지 않다면 접두사가 될 수 없다.
이다.

따라서 코드를,

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

// 파라미터로 주어지는 문자열은 const로 주어집니다. 변경하려면 문자열을 복사해서 사용하세요.
int solution(const char* my_string, const char* is_prefix) {
    int answer = 1;
    int i = 0;
    int l = 0;
    for(; is_prefix[i]; i++){
        if(is_prefix[i] != my_string[i]) answer = 0;	// 2번 조건
    }
    while(my_string[l]){
        l++;
    }
    if(i > l) answer = 0;	// 1번 조건
    return answer;
}

 

이렇게 작성했었는데, 문자열의 길이를 출력할 수 있는 strlen함수를 배우고

while문을 통해 문자열의 길이를 굳이 구하지 않아도 된다는 것을 깨달았다.

 

  • 문자열을 다루는 C 내장 함수 strlen, strcpy, strcat

strlen(문자열이 저장된 변수 이름): 문자열의 길이를 구하는 문자열 표준 함수

strcpy(복사해서 저장할 변수 이름, 복사할 기존 변수 이름): 문자열을 복사할 때 쓰는 함수

strcat(기존 문자열이 저장된 변수 이름, 새로 덧붙일 문자열): 문자열 뒤에 다른 문자열을 덧붙이는 함수

 

사용하려면 #include 전처리기로 string.h파일을 소스 파일 안에 포함시켜야 한다.

 

해서 다시 문제를 풀어보면

 

이렇게 코드길이를 줄일 수 있었다

그런데 string.h 파일을 포함시키지 않았는데도 작동되는게 조금 께름칙하다. 왜지..

나중에 찾아봐야겠다. 일단은 구글링을 해도 잘 모르겠다

 

++

 

gpt야 고마워..

 

아무튼 아주 조금이지만 메모리도 덜 잡아먹는 걸 보니(아주 미미하지만..) 변수가 적은 쪽이 가독성도 좋고 괜찮은 듯 하다

'개념 > C' 카테고리의 다른 글

프로그래머스 중앙값 구하기(버블 정렬)  (0) 2024.10.22
Printf 출력 키워드와 형식  (0) 2024.10.21
C언어  (8) 2024.10.21