#include <stdio.h>
#include <string.h>
int str_cmpic(const char *s1, const char *s2)
{
while ((*s1 == *s2) || ((*s1 + 32 == *s2) || *s1 == *s2 + 32))
{
if (*s1 == '\0')
return 0;
s1++;
s2++;
}
return (unsigned char)*s1-(unsigned char)*s2;
}
int str_ncmpic(const char *s1, const char *s2, size_t n)
{
for (size_t i = 0; i < n; i++)
{
if ((s1[i] != s2[i]) && ((s1[i] + 32 != s2[i]) && (s1[i] != s2[i] + 32)))
{
return s1[i] - s2[i];
}
}
return 0;
}
int main(void)
{
char st1[128];
puts("\"ABCD\"와 비교합니다.");
puts("\"XXXX\"면 종료합니다.");
while (1)
{
printf("문자열 st : ");
scanf("%s", st1);
if (str_cmpic("XXXX", st1) == 0)
break;
printf("str_cmpic(\"str_cmpic(\"ABCD\",st1) = %d\n", str_cmpic("ABCD", st1));
}
char st2[128];
puts("\"STRING\"의 처음 3개의 문자와 비교합니다.");
puts("\"XXXX\"를 입력하면 종료합니다.");
while (1)
{
printf("문자열 st : ");
scanf("%s", st2);
if (str_ncmpic("XXXX", st2, 3) == 0)
break;
printf("str_ncmpic(\"STRING\",st,3) = %d\n", str_ncmpic("STRING", st2, 3));
}
return 0;
}