#include <unistd.h>
void ft_swap_sp(char **a, char **b)
//attention au double pointeur, attention a la declaration *var
{
char *var_temp;
var_temp = *a;
*a = *b;
*b = var_temp;
}
void ft_putstr_sp(char *str)
// sp car + a la ligne
{
while (*str)
write(1, str++, 1);
write(1, "\n", 1);
}
int ft_strcmp(char *s1, char *s2)
//idem a serie C02-3
{
int i;
i = 0;
while (s1[i] && s2[i] && (s1[i] == s2[i]))
i++;
return (s1[i] - s2[i]);
}
/*
commentaire pour sort
argument ici pour ac-1 (main) directement uniquement les entree hors prog
si 3 entree alors 3 iterations
va jusqu a 2, suffit pour le trie de 3 element (2e -1.it)
boucle len: nombre de fois que av est comparer et swap dans la prochaine boucle
-> l element le +grand est place a la fin, a chaque passage.
boucle k: k toujour +1 (element suivant), comparaison de paire adjacentes
-> 1) strcmp permet de comparer si resultat sup a 0 alros av[j] est +grand
alros vrai -> fait le swap :av[j] prend la place de av[k] est invers.
ici via echange des adresses des 2 chaines (&av[k] !!!! adresse des pn)
incrementation ++j et ++k, pour comparer et swap les paires suivantes
--len: apres chaque passage 1 element de moins a trie, car deja remonte!!!
*/
void ft_sort_special(int argument, char **av)
{
int j;
int k;
int len;
len = argument;
while (len - 1)
{
j = 0;
k = 1;
while (k < len)
{
if (ft_strcmp(av[j], av[k]) > 0)
ft_swap_sp(&av[j], &av[k]);
++j;
++k;
}
--len;
}
}
int main(int ac, char **av)
{
int i;
i = 1;
ft_sort_special(ac - 1, av + 1);
while (av[i])
{
ft_putstr_sp(av[i]);
i++;
}
return (0);
}
/*
main:
sort + et - 1: exclur programme
while: apres trie, depl. * av vers elem. suivant dans tab d arg.
*/
To embed this project on your website, copy the following code and paste it into your website's HTML: