Petit problème : un même programme bête de TP sur les pointeurs fonctionne à merveille compilé avec GCC sous une Debian mais produit un résultat horrible avec une compilation par Dev C++ via ming je ne sais quoi.

J'utilise juste les bibs : stdio.h et stdlib.h

Ya t-il à adapter quoi que ce soit, changer le nom d'une lib, en rajouter une pour rendre le programme correct sous windows ? Quelle est ma bêtise grossière que je connais pas ?

Voilà le listing complet en brut...

et merci pour votre aide bien sûr !

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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
 
#include<stdio.h> /* pour la declaration de NULL */
#include<stdlib.h>
 
struct cellule
{int nb;
  struct cellule *suivant;
};
 
struct t_file
{
  struct cellule *premier;
  struct cellule *dernier;
};
 
 
void initialiser(struct t_file *f)
{
  f->premier=NULL;
  f->dernier=NULL;
 
}
 
void inserer(struct t_file *f , int valeur)
{
  /* Cas premier element */
  if ((f->premier == NULL) && (f->dernier == NULL) )
    {
      f->dernier=(struct cellule *) malloc (sizeof(struct cellule));
      f->dernier->nb=valeur;
      f->dernier->suivant=NULL;
      f->premier=f->dernier;
    }
  else
    {
      f->dernier->suivant = (struct cellule *) malloc (sizeof(struct cellule));
      f->dernier->suivant->nb = valeur;
      f->dernier=f->dernier->suivant;
    }
}
 
 
void afficher(struct t_file f)
{
  struct cellule *temp;
  temp = f.premier;
 
  while (temp != NULL)
    {
      printf("%d \n", temp->nb);
      temp=temp->suivant;
    }
}
 
int compter(struct t_file f)
{
    int compteur =0;
    struct cellule *temp;
    temp = f.premier;
    while (temp != NULL)
    {
          compteur =compteur +1;
      temp=temp->suivant;
    }
    return compteur;
}
 
 
 
void afficher_debut(struct t_file f)
{
  if (f.premier != NULL)
    {
      printf("%d \n", f.premier->nb);
    }
}
 
void afficher_fin(struct t_file f)
{
  if (f.dernier != NULL)
    {
      printf("%d \n", f.dernier->nb);
    }
}
 
 
void supprimer(struct t_file *f)
 
{
  f->premier = f->premier->suivant;
 
}
 
 
 
int main (void)
{
 
  struct t_file f;
  initialiser (&f);
  inserer (&f,3);
  inserer(&f,5);
  afficher(f);
  afficher_debut(f);
  afficher_fin(f);
  supprimer(&f);
  afficher(f);
  printf("%d \n",compter(f));
 
  return 0;
}