av[1] parsing, doesnt compile yet

This commit is contained in:
Jack Halford 2016-08-28 20:23:22 +02:00
parent 63c6f69988
commit b93eebc9be
3 changed files with 94 additions and 4 deletions

View file

@ -1 +1,14 @@
#include "libft.h"
#ifndef FILLIT_H
# include "libft.h"
# define FILLIT_H
# define BUF_SIZE 32
typedef struct s_tetrim
{
char id;
int pos[3][2];
int placed;
} t_tetrim;
#endif

@ -1 +1 @@
Subproject commit 36afd3d0ebf5258b9201fcbba8272e94b0b60df7
Subproject commit 5d24c020c6563f8d7eb78bdcb18e61f28aa0d435

View file

@ -5,13 +5,90 @@ void ft_usage(void)
ft_putendl("error");
}
t_list *ft_get_tetrims(char *filename)
{
int fd;
char buf[BUF_SIZE + 1];
int i;
int j;
int k;
int ref[2];
char letter = 'A';
t_tetrim tetrim;
t_list *tetrims;
fd = open(filename);
if (fd == -1)
return (0);
j = -1;
k = 0;
while ((ret = read(fd, buf, BUF_SIZE)))
{
ret[BUF_SIZE] = '\0';
i = 0;
while (ret[i])
{
if (ret[i] == '.')
;
else if (ret[i] == '#')
{
if (j == -1)
{
tetrim.id = letter++;
ref[0] = k / 5;
ref[1] = k % 5;
}
else if (j >= 0 && j <= 2)
{
(tetrim.pos)[j][0] = i / 5 - ref[0];
(tetrim.pos)[j][1] = i % 5 - ref[1];
}
else
return (0);
j++;
}
else if (i > 0 && ret[i] == '\n' && ret[i - 1] == '\n')
{
if (j != 3 || k != 20)
return (0);
ft_lstadd(&tetrims, ft_lstnew(tetrim, sizeof(tetrim)));
j = -1;
k = -1;
}
else if (ret[i] == '\n')
{
if ((k + 1) % 5 != 0)
return (0);
}
else
return (0);
i++;
k++;
}
}
if (j != 3 || k != 20)
return (0);
ft_lstadd(&tetrims, ft_lstnew(tetrim, sizeof(tetrim)));
return (tetrims);
}
int main(int ac, char **av)
{
(void)av;
if (ac != 2)
t_list *tetrims;
int i;
if (ac != 2 || !(tetrims = ft_get_tetrims(av[1])))
{
ft_usage();
return (1);
}
while (tetrims)
{
printf("%c", tetrims->content.id);
for (i=0; i<=3; i++)
printf("\t%i,%i\n", tetrims->content.pos[i][0], tetrims->content.pos[i][1]);
ft_putendl("");
tetrims = tetrims->next;
}
return (0);
}