c08 - KimTaebin-ai/study_posts GitHub Wiki
ํค๋ํ์ผ ์์ฑ ๋ฐฉ๋ฒ ์ดํด๋ฅผ ์๊ตฌ
ํนํ norminette ๊ท์น์ ๋ค์ ํ์ธํด๋ด์ผ ํ๋ค
#ifndef FT_H
# define FT_H
void ft_putchar(char c);
void ft_swap(int *a, int *b);
void ft_putstr(char *str);
int ft_strlen(char *str);
int ft_strcmp(char *s1, char *s2);
#endif
ifndef FT_BOOLEAN_H
# define FT_BOOLEAN_H
# include <unistd.h>
# define TRUE 1
# define FALSE 0
# define SUCCESS 0
typedef int t_bool;
void ft_putstr(char *str);
t_bool ft_is_even(int nbr);
# define EVEN(nbr) (nbr % 2 == 0)
# define EVEN_MSG "I have an even number of arguments.\n"
# define ODD_MSG "I have an odd number of arguments.\n"
#endif
๊ฐํ๋ฌธ์ ํ์
๋ํ norminette์๋ ifndef์ endif๊ตฌ๋ฌธ์ ์ ์ธํ ๋๋จธ์ง ๋งคํฌ๋ก ๊ตฌ๋ฌธ์์ ๋์ด์ฐ๊ธฐ๋ฅผ ํด์ผํ๋ค
ํ์ธํ๋ norminette์ด ๋ค๋ฅด๋ ์ด๋ ์ ๊ฒฝ๋ก์ pdf๋ก ํ์ธ ํ์ํ๊ธด ํจ
์ข ์ฌ๋ฏธ์๋๊ฒ ๋๋ฃํ๊ฐ๋ก ๋ ๋๋ฒ๊น ์ ํ๋ผ๊ณ ๋ช ์๊ฐ ๋์ด์๊ธฐ๋ ํ๋ค.
์ด ๋๋ถํฐ ํ๊ฐ๋ฅผ ์ข ๊ผผ๊ผผํ๊ฒ ํ๊ณ ์๋๋ฐ, ์ ํ์ด ์ข ์๋ค... ๋ญ๊ฐ ์ข์ ํ๊ฐ์ผ๊น
#ifndef FT_ABS_H
# define FT_ABS_H
# define ABS(nb) ((nb) < 0 ? -(nb) : (nb))
#endif
ABS๊ฐ ๋ญ์ง ํ ๋ฒ์ ๋ชป ๋ ์ฌ๋ฆฌ๋ ์ฌ๋์ด ๋ ๋ฐ์ ์๋ ๋ฏ;
์์ด ๊ณต๋ถ ์ข ํ์.....
#ifndef FT_POINT_H
# define FT_POINT_H
struct s_point
{
int x;
int y;
};
typedef struct s_point t_point;
void set_point(t_point *point);
#endif
์ฌ๊ธฐ์๋ถํด ๊ตฌ์กฐ์ฒด์ ๋ํ ์ดํด ํ์
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
int ft_strlen(char *str)
{
int count;
count = 0;
while (str[count])
count++;
return (count);
}
char *ft_strndup(char *src)
{
int i;
char *new_str;
new_str = (char *)malloc(sizeof(char) * ft_strlen(src) + 1);
if (new_str == NULL)
return (NULL);
i = 0;
while (src[i])
{
new_str[i] = src[i];
i++;
}
new_str[i] = '\0';
return (new_str);
}
struct s_stock_str *ft_strs_to_tab(int ac, char **av)
{
int i;
t_stock_str temp;
t_stock_str *strs;
strs = malloc(sizeof(t_stock_str) * (ac + 1));
if (strs == NULL)
return (NULL);
i = 0;
while (i < ac)
{
temp.size = ft_strlen(av[i]);
temp.str = av[i];
temp.copy = ft_strndup(av[i]);
if (temp.copy == NULL)
return (NULL);
strs[i++] = temp;
}
strs[ac].str = 0;
return (strs);
}
์ด ๋ฌธ์ ๋ ๊ตฌ์กฐ์ฒด ํจ์๋ฅผ ์ ์ํ๋ ๋ถ๋ถ์ด๋ค. ๊ตฌ์กฐ์ฒด ๋ฐฐ์ด์ ์ ์ธํ์ฌ ๊ทธ ๋ฐฐ์ด์์ ์ ์ ํ ๊ฐ๋ค์ ์ง์ด๋ฃ๋๊ฒ์ด๋ค. ์ด ๋ฌธ์ ๋ ft_strndup์ ์ฌ์ฉํ๋ค. ์ด์ ๋ฌธ์ ์์ ๊ตฌํํ strdup์ ์ ์ฌํ์ง๋ง copy๋ฅผ ํ ๋ฌธ์์ด์ ์ ํํ ํฌ๊ธฐ๋ฅผ ๋ฐํํด์ฃผ๊ธฐ ์ํด ๊ตฌํํ์๋ค.
#include <unistd.h>
#include "ft_stock_str.h"
void ft_putchar(char c)
{
write(1, &c, 1);
}
void ft_putnbr(int nb)
{
long i;
i = nb;
if (i < 0)
{
ft_putchar('-');
i = i * -1;
}
if (i > 9)
{
ft_putnbr(i / 10);
ft_putnbr(i % 10);
}
else
ft_putchar(i + '0');
}
void ft_putstr(char *str)
{
int i;
i = 0;
while (*str)
{
ft_putchar(*str);
str++;
}
ft_putchar('\n');
}
void ft_show_tab(struct s_stock_str *par)
{
int i;
i = 0;
while (par[i].str)
{
ft_putstr(par[i].str);
ft_putnbr(par[i].size);
ft_putchar('\n');
ft_putstr(par[i].copy);
i++;
}
}