본문 바로가기
카테고리 없음

C02

by 달빗슈 2020. 6. 2.

null ('\0')
https://gawoori.net/strlcat-3-%EB%A6%AC%EB%88%85%EC%8A%A4-%EB%A7%A4%EB%89%B4%EC%96%BC-%ED%8E%98%EC%9D%B4%EC%A7%80/


[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++;
}
}

반응형

댓글