ex00
c
int ft_strcmp(char *s1, char *s2)
{
while (*s1 != '\0' || *s2 != '\0')
{
if ((unsigned char) *s1 != (unsigned char) *s2)
return (*(unsigned char *)s1 - *(unsigned char *)s2);
s1++;
s2++;
}
return (0);
}
ex01
c
int ft_strncmp(char *s1, char *s2, unsigned int n)
{
unsigned int i;
i = 0;
while (i < n && (s1[i] != '\0' || s2[i] != '\0'))
{
if ((unsigned char) s1[i] != (unsigned char) s2[i])
return ((unsigned char)s1[i] - (unsigned char)s2[i]);
i++;
}
return (0);
}
ex02
c
int findlength(char *arr)
{
int i;
i = 0;
while (arr[i] != '\0')
i++;
return (i);
}
char *ft_strcat(char *dest, char *src)
{
int i;
int a;
int b;
i = 0;
a = findlength(src);
b = findlength(dest);
while (i < a)
{
dest[i + b] = src[i];
i++;
}
dest[a + b] = '\0';
return (dest);
}
ex03
c
unsigned int findlength(char *arr)
{
int i;
i = 0;
while (*arr != '\0')
{
arr++;
i++;
}
return (i);
}
char *ft_strncat(char *dest, char *src, unsigned int nb)
{
unsigned int a;
unsigned int b;
unsigned long long i;
a = findlength(src);
b = findlength(dest);
i = 0;
while (i < nb && src[i] != '\0')
{
dest[i + b] = src[i];
i++;
}
dest[b + i] = '\0';
return (dest);
}
ex04
c
int find_length(char *str)
{
int i;
i = 0;
while (str[i] != '\0')
i++;
return (i);
}
char *ft_strstr(char *str, char *to_find)
{
int i;
int j;
if (*to_find == '\0')
return (str);
i = 0;
while (str[i] != '\0')
{
j = 0;
if (str[i] == to_find[j])
{
while (j < find_length(to_find))
{
if (str[i + j] == to_find[j])
j++;
else
break ;
}
if (to_find[j] == '\0')
return (&str[i]);
}
i++;
}
return (0);
}
ex05
c
unsigned int find_length(char *arr)
{
int i;
i = 0;
while (arr[i] != '\0')
i++;
return (i);
}
unsigned int ft_strlcat(char *dest, char *src, unsigned int size)
{
unsigned int dest_len;
unsigned int src_len;
unsigned int x;
unsigned int n;
dest_len = find_length(dest);
src_len = find_length(src);
x = dest_len;
n = 0;
while (src[n] && (x + 1) < size)
{
dest[x] = src[n];
n++;
x++;
}
dest[x] = '\0';
if (dest_len < size)
return (src_len + dest_len);
else
return (src_len + size);
}
Size = dest 길이 + 붙일 데이터의 길이 + NULL
Size가 dest보다 작다면? (size < dest)
- dest는 아무 역할도 하지 않음. 반환값: src의 길이 + size만 반환
- dest가 뭔가 맞지 않음을 확인할 수 있음.