coup de pouce en c sous nux please :'(

coup de pouce en c sous nux please :'( - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 06-04-2004 à 01:41:31    

j'implore une aide avant de devenir fous,
 
je n'arrive pas à faire un bête tri d'un tableau de pointeur de caractères, avec un tableau à 2 dimentions de char ca marche très bien mais la impossible je comprend rien :'(
 
ca devrait afficher aaa puis zzz apres l'effet du qsort :'(

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int x;
  4. static int compar(const void *a,const void *b) {
  5.    x=strcmp((char*)a, (char*)b);
  6.    return x;
  7. }
  8. main() {
  9. char * p[2];
  10. p[0]=(char *) malloc(4);
  11. p[1]=(char *) malloc(4);
  12. sprintf(p[0], "%s", "zzz" );
  13. sprintf(p[1], "%s", "aaa" );
  14. qsort(p,2,sizeof(p[O]),&compar);
  15. printf("\n%s", p[0]);
  16. printf("\n%s\n", p[1]);
  17. }


Message édité par push le 06-04-2004 à 01:48:13
Reply

Marsh Posté le 06-04-2004 à 01:41:31   

Reply

Marsh Posté le 06-04-2004 à 01:57:10    

mauvaise cat
 

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. int main()
  6. {
  7.   char p[2][4] = { "zzz", "aaa" };
  8.    
  9.   qsort(p, sizeof p / sizeof p[0], sizeof p[0], (int (*)(const void*, const void*)) strcmp);
  10.    
  11.   printf("%s %s", p[0], p[1]);
  12.   return 0;
  13. }


     

Reply

Marsh Posté le 06-04-2004 à 03:51:09    

jte remercie Taz, ton écriture est nettement plus pro que la mienne évidemment mais enfait se que je n'arrive pas à comprendre, et c'est surtout ca l'important que je comprenne, c qu'en passant par un tableau de pointeurs de char je n'arrive pas à faire le tri dans mon prog alors qu'avec un tableau comme le tien cela passe.
 
 :hello:


Message édité par push le 06-04-2004 à 03:51:38
Reply

Marsh Posté le 06-04-2004 à 08:48:00    

Citation :

qsort(p,2,sizeof(p[O]),&compar);


 
Mes utilisations de C sont très loins derière moi, mais tu n'aurais pas oublié de lui passer des paramètres à ta fonction compar...

Reply

Marsh Posté le 06-04-2004 à 11:51:11    

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. static int pstrcmp(const void* left, const void* right)
  5. {
  6.   return strcmp(*(const char**)left, *(const char**)right);
  7. }
  8.  
  9. int main(int argc, char *argv[])
  10. {
  11.   int i;
  12.   for(i=0; i<argc; ++i)
  13.     {
  14.       puts(argv[i]);
  15.     }
  16.   putchar('\n');
  17.   qsort(argv, argc, sizeof(char*), pstrcmp);
  18.    
  19.   for(i=0; i<argc; ++i)
  20.     {
  21.       puts(argv[i]);
  22.     }
  23.   return 0;
  24. }


 
oups désolé, j'avais pas vu
avec un tableau de pointeurs, comme qsort passe un pointeur sur l'élément, ben tu te retrouves un const void* qui n'est en fait qu'un const char ** ... et hop.
 
la prochaine fois, poste sur Programmation


Message édité par Taz le 06-04-2004 à 13:21:25
Reply

Marsh Posté le 06-04-2004 à 12:34:45    

oki pour la cat désolé, sinon merci beaucoup, je vais aller décortiquer tout ca  :pt1cable:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed