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:
Ho dei dubbi sugli argomenti della funzione qsort.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; }
Il compilatore, però, mi da anche altri errori che non riesco proprio a capire.
Potreste aiutarmi?
Grazie mille in anticipo.

Rispondi quotando