C언어 창시자 데니스 리치

    C언어 문자열 끝자리 N개 비교하는 방법

    => C 언어에서는 제공하지 않는 substring 구현한 뒤 strcmp함수를 사용해서 비교한다.


    C 언어 substring 구현

    // x~번째 부터 x 번째 까지 문자열 자르기.. 구현.
     
    
    #include "stdio.h"
    #include "stdlib.h"
    #include "string.h"
    
     
    char *substring(char *input, int i_begin, int i_end);
    
     
    void main()
    {
         char str[12] = "12345678910";
    
         char *pchBuf;
    
    
    
         pchBuf = substring(str, 3, 9); //3번째부터 ~9번째 까지 짜름.. 0based 
    
         printf("%s\n", pchBuf);
    
        
    
         free(pchBuf); //substring에서 할당한거 해제 
    
    }
    
     
    
    char *substring(char *input, int i_begin, int i_end)
    {
         int cnt    = 0;
         int size   = (i_end - i_begin) + 2;
         char *str = (char*)malloc(size);
    
     
    
         memset(str, 0, size);
    
    
    
         for(int i = i_begin; i <= i_end; i++)
         {
              str[cnt] = input[i];
              cnt++;
         }
    
         return str;
    }

    strncmp 함수

    검사할 문자열을 지정해서 비교가 가능하다.


    헤더 <string.h>


    strcmp   매개변수 

    strcmp   (비교문자열1, 비교 문자열 2) 

     

    strncmp 매개변수

    strncmp (비교문자열1, 비교 문자열 2, 비교할 문자열 길이)

     


    strcmp

     

    char str1[] = “BlockDMask”; 

    char str2[] = “BlockDMask”; 

    strcmp(str1, str2);             // 문자열이 같으므로 0 

    strcmp(str1, BlockFMask”); // D < F 이므로 음수 반환

    strcmp(str1, BlockAMask”); // D > A 이므로 양수 반환

     

    strncmp

    const char* str1 = “BlockDmask

    const char* str2 = “BlockFmask

    strncmp(str1, str2, 5); //‘Block” 까지만 검사하므로 0 반환

    strncmp(str1, str2, 6);  // D < F 이므로 음수 반환



    출처: https://blockdmask.tistory.com/391 [개발자 지망생]

     


    문자열 비교시 주의사항

    C언어 스타일의 문자열 char*, char []의 끝에는 문자열의 끝을 알리는 ‘\0’ 이 들어가 있고 null을 의미한다.

    n자리에 -1을 넣은 경우는 매개변수로 들어온 문자열을 끝까지 비교


    C언어 문자열 끝자리 N개 비교하는 방법

    => C 언어에서는 제공하지 않는 substring 구현한 뒤 strcmp함수를 사용해서 비교한다.

     



    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기
    loading