La prova propone di scrivere un programma che ordini una serie di parole immesse dall'utente e che le stampi.
La lettura deve essere interrotta quando viene immessa una "parola vuota".
Ogni parola deve essere salvare in una stringa allocata dinamicamente e deve essere usato un vettore di puntatori per tenere traccia di tutte le stringhe immesse.
Per ordinare il vettore si suggerisce di utilizzare la funziona "qsort".
Ora vi propongo il mio codice:
codice:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LUN 20
#define MAX_WORD 50
int read_line(char str[], int n);
int compare(const char str1, const char str2);
int main(void)
{ int i, j;
char parola[MAX_LUN];
char *reminders[MAX_WORD];
printf("Inserisci le parole");
for(;; )
{ i = 0;
read_line(parola, MAX_LUN);
if(strcmp(parola,"\n") == 0)
break;
reminders[i] = malloc(strlen(parola) + 1);
if(reminders[i] == NULL)
{ printf("vettore pieno\n");
break;
}
strcpy(reminders[i], parola);
i++;
}
qsort(reminders[0], i, MAX_LUN, compare);
for(j = 0; j < i; j++)
printf("%s\n", reminders[j]);
return 0;
}
int read_line(char str[], int n)
{ int ch, i=0;
while((ch = getchat()) != '\n') ù
if (i < n)
str[i++] = ch;
str[i] = /0;
return i;
}
int compare(const char str1, const char str2)
{ if(strcmp(str1, str2) < 0)
return -1;
else
if(strcmp(str1,str2) == 0)
return 0;
else
return 1;
}
Ho dei dubbi sugli argomenti della funzione qsort.
Il compilatore, però, mi da anche altri errori che non riesco proprio a capire.
Potreste aiutarmi?
Grazie mille in anticipo.