C언어 문제/표준함수 구현
strcmp()함수를 포인터와 배열로 구현하기
자연&사람
2019. 12. 21. 14:35
반응형
문제).
배열과 포인터를 활용을 위하여 strcmp(3)함수의 prototype과 기능을 확인한 후 포인터와 배열로 각각 구현하시오.
strcmp(3)함수의 spec은
strcmp(3) - 문자열 끝까지 비교
strcmp(3) #include int strcmp(const char *s1, const char *s2); s1, s2 두 문자열의 내용을 1바이트씩 unsigned char로 크고 작음을 비교합니다. 두 문자열이 1바이트 씩 비교하면서 다른 값을 만..
www.it-note.kr
이며, 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;
}
반응형