...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]); }

Rispondi quotando
.text+0x191): undefined reference to `alloc'