반응형
문제).
배열과 포인터를 활용을 위하여 strcmp(3)함수의 prototype과 기능을 확인한 후 포인터와 배열로 각각 구현하시오.
strcmp(3)함수의 spec은
이며, strcmp(3)함수의 spec상으로는 문자열이 같으면 0, 앞의 문자열이 정렬시 앞쪽이면 음수, 그렇지 않으면 양수이지만 대부분의 시스템에서 -1, 0, 1을 return하므로 이에 맞춰 구현을 하시오.
포인터로 구현한 함수는
int strcmp_ptr(const char *s1, const char *s2);의 이름으로 구현하고,
배열로 구현한 함수는
int strcmp_arr(const char *s1, const char *s2);의 이름으로 구현하시오.
답은 아래에... ↓
스스로 풀어보시고... ↓
아래 답과 비교해보세요. ↓
포인터로 구현하기)
int strcmp_ptr(const char *s1, const char *s2)
{
int cmp;
while(*s1 && *s1 == *s2) {
s1++;
s2++;
}
cmp = (unsigned char)*s1 - (unsigned char)*s2;
return cmp > 0 ? 1 : cmp < 0 ? -1 : 0;
}
배열로 구현하기)
int strcmp_arr(const char *s1, const char *s2)
{
int i, cmp;
for(i = 0; s1[i] && s1[i] == s2[i]; i++) ;
cmp = (unsigned char)s1[i] - (unsigned char)s2[i];
return cmp > 0 ? 1 : cmp < 0 ? -1 : 0;
}
반응형
'C언어 문제 > 표준함수 구현' 카테고리의 다른 글
숫자를 3자리씩 comma(,)로 구분하여 문자열로 변환하기 (0) | 2020.11.19 |
---|---|
strcpy()함수를 포인터와 배열로 구현하기 (5) | 2019.12.21 |
strcat()함수를 포인터와 배열로 구현하기 (0) | 2019.12.20 |
strlen()함수를 포인터와 배열로 각각 구현하기 (0) | 2019.12.20 |