구조체 포인터 다뤄보기
typedef struct string_struct
{
int size;
char *str;
char *copy;
} string_s;
struct string_struct *ft_table_to_struct(int ac, char **av)
{
int i;
struct string_struct *data_arr;
if (!(data_arr = malloc((ac + 1) * sizeof(struct string_struct))))
return (0);
i = 0;
while (i < ac)
{
data_arr[i].size = ft_strlen(av[i]);
data_arr[i].str = av[i];
data_arr[i].copy = ft_strdup(av[i]);
i++;
}
data_arr[i] = (struct string_struct){0, 0, 0};
return (data_arr);
}
- 문자열을 담고있는 다중 배열을 구조체에 담아 반환하는 내용의 함수다.
- 반환되는 구조체 배열을 순회하는 코드는 다음과 같다
string_s *stock_str;
char *arr[4] = {"Hello", "world", "nice", "day"};
stock_str = ft_strs_to_tab(4, arr);
while (stock_str->size)
{
printf("%d, %s, %s \n",
stock_str->size,
stock_str->str,
stock_str->copy
);
stock_str++;
}
- 구조체 포인터를 순회하기 위해서는
.
대신 ->
로 참조한다.