Bonjour,
Je dois comparer des chaînes de caractères pour les classer dans l'ordre alphabétique dans un tableau.
Mon code semble trier correctement mais mon problème est que je dois limiter l'impression à 100 caractères par chaîne et je ne vois pas comment faire...
Je ne sais pas si je dois limiter le nombre de caractères lors de mon scanf, en supprimer avec ma fonction ou en limiter l'impression avec mon printf.
J'envoie donc tout mon code, désolé.
Si quelqu'un a un conseil, merci d'avance.

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
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <stdbool.h>
int compareMots(const void *p1, const void *p2)
{
   int lettre = 0;
   char* Liste1 = (char*) p1;
   char* Liste2 = (char*) p2;
   int long1 = strlen(Liste1);
   int long2 = strlen(Liste2);
 
 
   while (lettre < long1 && lettre < long2 && Liste1[lettre] == Liste2[lettre]){
      lettre++;
      }
   if (Liste1[lettre] < Liste2[lettre] || Liste1[lettre]=='\0'){
      return false;
      }
   else if (Liste2[lettre] < Liste1[lettre] || Liste2[lettre]=='\0'){
      return true;  
      }
   return 0;
  }
int main(){
   int nbLignes;  
scanf("%d\n", &nbLignes);
char Liste[nbLignes][100];
for (int idLigne = 0; idLigne <= nbLignes; idLigne = idLigne + 1)
   {
      scanf("%s\n", Liste[idLigne]);
 
      }
qsort(Liste, nbLignes, 100 * sizeof(char), compareMots);           
 
for (int a = 0; a <= nbLignes; a = a + 1){
         printf("%s\n", Liste[a]);
      }
   }