...prima di cominciare !
Non mi entra neanche nella readlines ( l' ho debuggata con l ' IDE) , veloce come un fulmine :
Grazie per l ' aiuto.....



codice:
 


            #include <stdio.h> 
             #include <string.h>
             #define  MAXLINES   1000

  char *lineptr[MAXLINES];  /* puntatore alle linee di testo  */
  int   readlines(char *lineptr[], int nlines);
  void  writelines(char  *lineptr[], int nlines); 
  void  qsort (char  *lineptr[], int left, int  right);

  void  swap (char *v[], int i, int j);



  /* ordina le linee di input */

     main()
       { 

         int nlines;
         if  ((nlines = readlines(lineptr, MAXLINES)) >= 0 )
             
             {
                qsort(lineptr, 0, nlines -1);
                writelines(lineptr, nlines);
                return 0 ;
              }
             
                else
                  { 
                     printf("errore: troppe linee di input da ordinare\n");
                      return 1 ;
                  }

         }            





        /* readlines legge le linee di inpuy  */ 


                #define ALLOCSIZE  10000
                #define MAXLEN 1000
                int  getline(char  *, int);

                 
                    
                int  readlines(char  *lineptr[], int maxlines )

                 {

                   int  len;
                   int  nlines;
                   char  *p; 
                   char line[MAXLEN];
                   nlines = 0;

                   while  ((len = getline(line,MAXLEN)) >  0 )

                      if   (nlines >= maxlines ||  (p = malloc(len)) == NULL)
                                   
                           return  -1 ;
                      else

                        {
                          line[len-1] = '\0';
                          strcpy(p, line);
                          lineptr[nlines++] = p;
                         }

                  }




   /* qsort : ordina v[left] ... v[right] in ordine crescente   */


           void   qsort( char *v[], int left, int right )

                {
                  int i, last;
                  void  swap(char *v[], int i, int j);

                 if (left >= right) // se il vettore contiene meno di due
                    return;         // elementi non fa nulla

                 swap(v, left, (left + right) / 2 );
                 last = left;
		 for (i= left+1; i <= right; i++)
                    if (v[i] < v[left])
                        
                        swap(v, ++last, i);

        /* ripristina l' elemento discriminante  */

                 swap(v, left, last);
                 qsort(v, left, last - 1);
                 qsort(v, last + 1, right);  

              }


   /* swap : scambia v[i] con v[j]  */

           void  swap (char *v[], int i, int j)


             {  char *temp;
		
		temp = v[i];
		v[i] = v[j];
		v[j] = temp;

            }
 
 

                   /* writelones scrive in output le linee  */


             void  writelines(char  *lineptr[], int  nlines)

                    {

                        int  i;

                        for  (i = 0; i < nlines; i++ )
                            printf("%s\n", lineptr[i]);  


                    }