Bonjour
voilà j'ai fais un programme cependant je bute sur la dernière étape de mon programme
Lors du tri, je ne pense pas que cela fonctionne, si je ne rentre qu'un seul caractère à la place des mots , lors de l'affichage après tri il m'affiche null
Par contre si je rentre une chaîne de plusieurs caractère, il ne m'affiche rien du tout ...

Quelqu'un peut t'il m'aider ? mon code : https://pastebin.com/7nxXAPf0
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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
int main(int argc, char const *argv[])
{
//          Declaration variable
    FILE *pfichier = fopen("MOTS.TXT","w");
    char mot[50];
    char *tri;
    char *temp;
    int i,nb_mot=0,a,b;
    int longueur=0;
 
//          Initialisation interractive
   printf("Combien de mot voulez vous rentrer ? : ");
    scanf("%d",&nb_mot);
 
//          Ecriture dans le fichier
    for (i = 0; i < nb_mot; ++i)
    {
        printf("Mot #%d : ",i+1);
        scanf("%50s",&mot);
        longueur=longueur+strlen(mot);
        fprintf(pfichier,"%s\n",mot );
    }
    tri = malloc(sizeof(char)*longueur);
    fclose(pfichier);
//          Lecture
    pfichier = fopen("MOTS.TXT","r");
    if (pfichier==NULL)
        {
            puts("erreur");
            exit(1);
        }
        i=0;
    while (fgets(mot,50,pfichier))
    {
        printf("%s",mot);
        tri=mot;
        i++;
    }
    fclose(pfichier);
    for (a = 0; a < nb_mot-1; a++)
    {
        for (b = a+1; b < nb_mot; b++)
        {
            if (*(tri+a)>*(tri+b))
            {
                temp = *(tri+a);
                *(tri+a) = *(tri+b);
                *(tri+b)= temp;
            }
        }
    }
    for (i = 0; i < nb_mot; ++i)
    {
        printf("%s\n",tri[i] );
    }
 
    return 0;
}
d'avance, je vous remercie