Ciao ragazzi.. scusate se chiedo sempre aiuto ma ne ho davvero bisogno. Devo fare un esercizio il cui testo è:
"Dato un file di testo (ingresso.txt) che contiene in ogni riga due stringhe(senza spazi separatori) scrivere nel file di uscita (uscita.txt) la stringa la cui lunghezza è maggiore(nel caso siano uguali scrivere la prima delle due). Nota: la lunghezza massima della stringa è 128 caratteri."
Sotto al testo c'è l'esempio di un file elenco.txt cosi composto:
Michele Carmelo
Carmelo Giovanni
Anna Giuseppe
Giuseppe Anna
Giancarlo Giada
Luisa Annalisa
Ora io non ho capito se non ci devono essere spazi separatori tra una riga e l'altra com'è nel file di esempio elenco.txt che ho scritto oppure non ci devono essere spazi tra un nome e l'altro. Io ho fatto l'esercizio creando il file di ingresso così come nell'esempio e sono riuscito a fare funzionare il programma però se tolgo gli spazi tra un nome e l'altro il programma non funziona più. Vi posto il mio codice e vorrei capire se l'esercizio l'ho fatto bene o se non ci devono essere spazi tra i nomi e quindi il codice è stato scritto male. Attendo vostra risposta. Grazie mille.
codice:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<ctype.h>
main(){
//inizio dichiarazioni
FILE* pi;
FILE* pu;
char s1[128],s2[128];
int n,i,limite;
//fine dichiarazioni
pi=fopen("elenco.txt","r");
if(pi==NULL){perror("Il file non esiste!"); exit(1);}
pu=fopen("uscita.txt","w");
printf("Le stringhe lette da file sono:\n\n");
for(n=0;n<=128;n++){
limite=fscanf(pi,"%s%s",&s1,&s2);
if(limite==EOF) break;
printf("%s %s\n",s1,s2);
if(strlen(s1)==strlen(s2)){ fprintf(pu,"%s\n",s1); printf("Le stringhe sono uguali, scrivo la prima: %s\n\n",s1);}
else if(strlen(s1)>strlen(s2)){ fprintf(pu,"%s\n",s1); printf("La stringa piu lunga e':%s\n\n",s1);}
else if(strlen(s1)<strlen(s2)){ fprintf(pu,"%s\n",s2); printf("La stringa piu lunga e':%s\n\n",s2);}
}
fclose(pi);
if(pu==NULL){perror("Errore!"); exit(1);}
else printf("\nIl file uscita e' stato creato correttamente.\n\nFine Programma.\n");
fclose(pu);
}