[C/C++] strcpy strlen strcmp strcat _ 구현 코드

    반응형

    * 이번 포스팅 에서는 [C/C++] C언어 방식 문자열 포스팅에서 알아본 문자열 함수들을 직접 구현해 보도록 하겠습니다.

    * 개인적인 공부 내용을 기록하는 용도로 작성한 글 이기에 잘못된 내용을 포함하고 있을 수 있습니다.

     

    #1 strcpy

    #2 strlen

    #3 strcmp

    #4 strcat


    #1 strcpy

    /* 
    	strcpy - 문자열을 복사해주는 함수
    	dest 문자열에 src 문자열을 복사합니다.
    */
    
    void strcpy(char *dest, const char *src){
    	while(*src != '\0'){ // NULL 문자열 까지 반복
    		*(dest++) = *(src++); // src의 문자열을 dest로 복사
    	}
    	*(dest) = '\0'; // dest의 마지막 문자열 NULL로 지정
    }
    
    int main(int argc, char* argv[]){
    	char dest[] = "";
    	char src[] = "MyString";
    	strcpy(dest, src);
    	cout << "strcpy : " << dest << endl;
    	return 0;
    }
    strcpy : MyString

     

    #2 strlen

    /*
    	strlen - 문자열의 길이를 반환해 주는 함수
    */
    
    int strlen(const char *src){
    	int cnt = 0;
    	while(*src != '\0'){ // NULL 문자열 까지 반복
    		*(src++);
    		cnt++; // 문자열 길이 (cnt) 증가
    	}
    	return cnt;
    }
    
    int main(int argc, char* argv[]){
    	int len = strlen(src);
    	cout << "strlen : " << len << endl;
    	return 0;
    }
    strlen : 8

     

    #3 strcmp

    /* 
    	strcmp - 두 문자열을 비교해 주는 함수
    	문자열이 같을 경우 0을 반환,
    	문자열이 다를 경우 -1을 반환합니다.
    */
    
    int strcmp(const char *str1, const char *str2){
    	
    	int str1Length = strlen(str1);
    	int str2Length = strlen(str2);
    	if (str1Length != str2Length) { return -1; } // 문자열의 길이가 다를 경우 -1 반환
    	
    	while(*str1 != '\0'){ // NULL 문자열 까지 반복
    		if(*str1 != *str2) { return -1; } // 중간에 서로 다른 문자가 존재할 경우 -1 반환
    		*str1++, *str2++;
    	} 
    	
    	return 0;
    }
    
    int main(int argc, char* argv[]){
    	cout << "strcmp" << endl;
    	char myString1[] = "NOVLOG";
    	char myString2[] = "NOVLOG";
    	cout << "* 문자열이 같은 경우 " << strcmp(myString1, myString2) << endl;
    	
    	char myString3[] = "NOVLOG";
    	char myString4[] = "NOV";
    	cout << "* [문자열이 다른 경우] " << strcmp(myString3, myString4) << endl;
        
    	return 0;
    }
    strcmp
    * 문자열이 같은 경우 0
    * [문자열이 다른 경우] -1

     

    #4 strcat

    /* 
    	strcat - 문자열을 이어 붙여 주는 함수
    	dest 문자열에 src 문자열을 이어 붙여 줍니다.
    */
    
    char* strcat(char *dest, const char *src){
    	char *idx = dest; // dest의 첫 주소를 char 포인터에 저장
    	while(*dest != '\0') { dest++; } // desd의 NULL 문자까지 포인터 증가
    	while(*src != '\0') { *(dest++) = *(src++); } // src의 NULL 문자까지 포인터 증가 후 대입
    	*dest = '\0'; // dest의 마지막 문자에 NULL 문자 대입
    	return idx;
    }
    
    int main(int argc, char* argv[]){
    	char dest2[] = "NOV";
    	char src2[] = "LOG";
    	strcat(dest2, src2);
    	cout << "strcat : " << dest2 << endl;
    	return 0;
    }
    strcat : NOVLOG
    반응형

    댓글

    Designed by JB FACTORY