[ex00]
strcpy함수란?
string(=str), copy(cpy)
char* strcpy(char* dest, const char* origin);
origin에 있는 문자열 전체를 dest로 복사 하는 함수
char *ft_strcpy(char *dest, char *src)
{
int i;
i = 0;
while (src[i] != '\0')
{
dest[i] = src[i];
i++;
}
dest[i] = '\0';
return (dest);
}
[ex01]
strncpy함수란?
char* strncpy(char* dest, const char* origin, size_t n);
string number copy
origin에 있는 문자열을 dest로 복사를 하는데 n만큼만 복사하는 함수
char *ft_strncpy(char *dest, char *src, unsigned int n)
{
unsigned int i;
i = 0;
while (i < n && src[i] != '\0')
{
dest[i] = src[i];
i++;
}
while (i < n)
{
dest[i] = '\0';
i++;
}
return (dest);
}
[ex02]
int ft_str_is_alpha(char *str)
{
int i;
i = 0;
if (str[0] == '\0')
return (1);
while (str[i] != '\0')
{
if (str[i] >= 'A' && str[i] <= 'z')
{
return (1);
}
i++;
}
return (0);
}
[ex03]
int ft_str_is_numeric(char *str)
{
int i;
i = 0;
if (str[0] == '\0')
return (1);
while (str[i] != '\0')
{
if (!(str[i] >= '0' && str[i] <= '9'))
{
return (0);
}
i++;
}
return (1);
}
[ex04]
int ft_str_is_lowercase(char *str)
{
int i;
i = 0;
if (str[0] == '\0')
return (1);
while (str[i] != '\0')
{
if (!(str[i] >= 'a' && str[i] <= 'z'))
{
return (0);
}
i++;
}
return (1);
}
[ex05]
int ft_str_is_uppercase(char *str)
{
int i;
i = 0;
if (str[0] == '\0')
return (1);
while (str[i] != '\0')
{
if (!(str[i] >= 'A' && str[i] <= 'Z'))
{
return (0);
}
i++;
}
return (1);
}
[ex06]
int ft_str_is_printable(char *str)
{
int i;
i = 0;
if (str[0] == '\0')
return (1);
while (str[i] != '\0')
{
if (!(str[i] >= 127 && str[i] <= 31))
{
return (1);
}
i++;
}
return (0);
}
[ex07]
char *ft_strupcase(char *str)
{
int i;
i = 0;
while (str[i] != '\0')
{
if (str[i] >= 'a' && str[i] <= 'z')
{
str[i] = str[i] - 32;
}
i++;
}
return (str);
}
[ex08]
char *ft_strlowcase(char *str)
{
int i;
i = 0;
while (str[i] != '\0')
{
if (str[i] >= 'A' && str[i] <= 'Z')
{
str[i] = str[i] + 32;
}
i++;
}
return (str);
}
[ex09]
첫번째 글자인지 알려주는 index를 넣는다.
char *ft_strcapitalize(char *str)
{
int i;
char a;
i = 1;
if (str[0] >= 'a' && str[0] <= 'z')
{
str[0] = str[0] - 32;
}
while (str[i] != '\0')
{
a = str[i - 1];
if (!((a >= 'A' && a <= 'Z') || (a >= 'a' && a <= 'z')
|| (a >= '0' && a <= '9')))
{
if (str[i] >= 'a' && str[i] <= 'z')
str[i] = str[i] - 32;
}
if (((a >= 'A' && a <= 'Z') || (a >= 'a' && a <= 'z'))
&& (str[i] >= 'A' && str[i] <= 'Z'))
{
str[i] = str[i] + 32;
}
i++;
}
return (str);
}
[ex10]
unsigned int ft_strlcpy(char *dest, char *src, unsigned int size)
{
unsigned int i;
i = 0;
while (i < size -1 && src[i] != '\0')
{
dest[i] = src[i];
i++;
}
dest[i] = '\0';
return (i);
}
strlcpy함수란?
strlcpy(char *dst, const char *src, size_t size)
dst에다가 src를 복사하는데, size - 1 만큼만 복사한다
strlcpy(str, "123456" 4);
이래하면 길이가 3만큼만 복사되니까
1, 2, 3 이 복사된다
끝에 수동으로 NULL을 입력해줘야한다!!
strlcpy(str, char *strin1, size_t n);
string1 길이 중 n-1만큼만 복사하고 그 n번쨰에는 Null을 넣어준다.
[ex11]
#include <unistd.h>
void ft_putchar(char c)
{
write(1, &c, 1);
}
void ft_putstr_non_printable(char *str)
{
int i;
unsigned char a;
i = 0;
while (str[i] != '\0')
{
a = (unsigned char)str[i];
if (a >= 127 || a <= 31)
{
ft_putchar('\\');
ft_putchar("0123456789abcdef"[a / 16]);
ft_putchar("0123456789abcdef"[a % 16]);
}
else
{
ft_putchar(a);
}
i++;
}
}
댓글