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함수를 사용해서 비교한다.