Bonjour, j'ai un souci avec mon programme que je n'arrive pas à comprendre.

Ma fonction d'affichage ne marche pas correctement, il m'affiche non seulement pas tous les éléments qui dans ma liste, mais aussi elle ne m'affiche le dernier élément n-1 fois.
Exemple si je saisie trois chaines, la fonction m'affiche la dernière 2 fois. Je vous mets tout le code.
fichier.h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
struct cellule
{
	char *chaine;
	struct cellule *suivant;
};
typedef struct cellule cellule;
struct liste
{
	cellule * debut;
	cellule *fin;
	int taille;
};
typedef struct liste liste;
en plus le fichier principal
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "exo5.h"
#define MAX 1000
 
//fonction 'affichage
 
void affiche(liste *list){
	cellule * tmp=list->debut;
	while(tmp->suivant!=NULL)
	{
		printf("%s ",tmp->chaine);
		tmp->suivant=tmp->suivant->suivant;
	}
	printf("\n");0
}
 
//fonction d'initialisation
 
void initialiser(liste * l)
{
	l->debut=NULL;
	l->fin=NULL;
	l->taille=0;
}
//le main
 
int main()
{
 
	unsigned int taille;
	printf("saisir la taille du tableau: \n");
	scanf("%u",&taille);
	char buffer[MAX];
	cellule * tmp;
	//creation de la liste
	liste *list = malloc(sizeof(liste));
	initialiser(list);
	for(int i=0; i<taille;i++)
	{
		printf("Saisir mois %d\n",i+1);
		scanf("%s", buffer);
		cellule *c= malloc(sizeof(cellule));//creation de la cellule
		c->chaine = (char*) malloc(strlen(buffer)*sizeof(char)+1);//allocation du tableau de char
		strcpy(c->chaine,buffer);//affectation de la chaine au champ chain de cellule
		if(list->debut==NULL)
		{
			list->debut=c;
			list->fin=c;
		}
		else{
			tmp=list->debut;
			list->debut=c;
			c->suivant=tmp;
		}
		list->taille++;
 
	}
	affiche(list);
}
Merci d'avance pour vos aides.