Salve a tutti, sono nuovo del forum e ho deciso di iscrivermi perchè ho più volte trovato soluzione ai miei dubbi seguendo vostre vecchie discussioni, ma ora ho bisogno di voi(Se c'è una sezione di presentazione linkate pure se è prassi). Di seguito vi linko il mio codice che è suddiviso in 7 richieste anche se qui ne sono presenti solo 4, il problema che mi ha bloccato è presente nel punto 4 "case 4:" cioe nell'ordinamento alfabetico delle parole presenti in un file.txt che io devo andare a leggere... Qualcuno di voi sarebbe così gentile da aiutarmi? Voglio capire il procedimento...
P.s.
I primi 3 punti sono funzionanti. Per provare il codice basta compilare ed eseguire il programma su cygwin ----- > gcc main.c -o main.exe -----> ./main.exe file.txt
Ecco il codice:
codice:#include <stdlib.h> #include <string.h> #include <stdio.h> //Prototipi delle funzioni void checkFile(FILE *pFile); void stampaFileAVideo(FILE *pFile); void copiaFile(FILE *pFile); void main(int argc, char *argv[]){ FILE *pFile= fopen(argv[1], "r"); int scelta; //Controllo se i parametri passati sono effettivamente 2, nome programma e file txt if(argc<2){ printf("\n\n\nErrore nel passaggio dei parametri... \n"); printf("Ritenta l'inserimento e riprova ad eseguire... \n\n\n"); exit(1); } //Controlla eventuali errori sul passaggio del file txt al programma in cygwin if(pFile==NULL){ printf("\n\n\nErrore nel passaggio del file txt dal quale leggere! \n"); printf("Probabile errore grammaticale o di omissione di un file txt... \n\n\n"); exit(1); } printf("\n*************************** Operazioni su file .txt disponibili ***************************\n\n\n"); printf("1) Controlla se il file .txt e' vuoto o no\n"); printf("2) Stampa a video il contenuto del file .txt\n"); printf("3) Duplica il file .txt\n"); printf("4) Ordina il contenuto del file .txt in modo alfabetico\n"); printf("\n\n\nInserisci la tua scelta e premi 'Invio' ---> "); scanf("%d", &scelta); switch(scelta){ case 1: printf("\n\n\n\n\n*************************** Stato del file .txt ***************************\n\n"); checkFile(pFile); break; case 2: printf("\n\n\n\n\n*************************** Contenuto del file .txt ***************************\n\n"); stampaFileAVideo(pFile); printf("\n\n"); break; case 3: printf("\n\n\n\n\n*************************** Duplicazione del file .txt ***************************\n\n"); printf("Il file da copiare e' parole.txt passato da shell...\n\n\n"); copiaFile(pFile); break; case 4: printf("\n\n\n\n\n************ Ordinamento alfabetico del file .txt ********\n\n"); printf("********* Contenuto del file non ordinato *********\n\n"); stampaFileAVideo(pFile); printf("\n\n\n\n********* Contenuto del file ordinato in modo alfabetico *****\n\n"); stampaFileOrdinatoAVideo(parametro/i); //ad esempio //Ora io qui avevo pensato di creare una versione modifica di "stampaFileAVideo" che //però stampa a video un elenco ordinato alfabeticamente, ma non la so fare... } //Chiude il file fclose(pFile); } //Controlla se il file passato da shell è vuoto o contiene caratteri void checkFile(FILE *pFile){ char c= getc(pFile); if(feof(pFile)){ printf("\nIl file .txt e' vuoto...\n\n\n"); exit(1); } else { printf("\nIl file .txt non e' vuoto\n\n\n"); exit(1); } } //Stampa il contenuto del file .txt a video void stampaFileAVideo(FILE *pFile){ char *buffer; //Oppure buffer[200] char *parolaLetta; while(1){ parolaLetta=fgets(buffer, 200, pFile); if( parolaLetta==NULL ) break; printf("%s", buffer); } } //Copia il file che passo come parametro in un secondo file.txt del quale specifico il nome void copiaFile(FILE *pFile){ char tf[100], ch; FILE *pFileOut; printf("Inserisci il nome del file in cui copiare parole.txt(non dimenticare l'estensione): "); scanf("%s",tf); pFileOut=fopen(tf, "w"); while( ( ch = getc(pFile) ) != EOF ) putc(ch, pFileOut); printf("\n\n\n\nIl file e' stato copiato con successo!\n"); }

). Di seguito vi linko il mio codice che è suddiviso in 7 richieste anche se qui ne sono presenti solo 4, il problema che mi ha bloccato è presente nel punto 4 "case 4:" cioe nell'ordinamento alfabetico delle parole presenti in un file.txt che io devo andare a leggere... Qualcuno di voi sarebbe così gentile da aiutarmi? Voglio capire il procedimento...
Rispondi quotando
