Ciao ragazzi. mi sono bloccato su un esercizio. Il testo è:
"Dato un file di testo"ingresso.txt" che contiene in ogni riga un nome e l'età(intero) leggere tutte le righe e stampare in un file di uscita.txt la coppia che contiene il nome di lunghezza minima con età superiore a 40. nota: lunghezza della stringa max 128 caratteri."
Il file di testo dato è:
Michele 34
Carmelo 36
Anna 35
Giuseppe 29
Giancarlo 35
Luisa 41
io ho scritto questo codice:
codice:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<ctype.h>
main(){
//inizio dichiarazioni
FILE* pi;
FILE* pu;
int i,n,limite;
char s[128];
char s2[128];
int n2=0;
char sprec[128];
int a,b;
//fine dichiarazioni
pi=fopen("ingresso.txt","r");
if(pi==NULL){perror("Il file non esiste!"); exit(1);}
for(i=0;i<=128;i++){
limite=fscanf(pi,"%s%d",&s,&n);
if(limite==EOF) break;
printf("Coppia letta: %s %d\n",s,n);
if(i==0){
strcpy(sprec,s);
}
a=strlen(s);
b=strlen(sprec);
if(a<b && n>40){
strcpy(s2,s);
n2=n;
}
strcpy(sprec,s);
}
fclose(pi);
printf("La coppia che sara' scritta su file e': %s %d\n",s2,n2);
pu=fopen("uscita.txt","w");
fprintf(pu,"%s %d",s2,n2);
if(pu==NULL){
perror("Errore!");
exit(1);
}
else printf("Il file uscita e' stato creato correttamente.\n\nFine Programma.\n");
fclose(pu);
}
se lo eseguo nel file di uscita mi scrive Luisa 41, com'è giusto che sia. Però se modifico il file di ingresso e lo scrivo cosi:
Michele 34
Carmelo 36
Anna 55
Giuseppe 29
Giancarlo 35
Luisa 41
ed eseguo il codice scritto, su file mi scrive sempre Luisa 41 ma in teoria dovrebbe scrivere Anna 55 in quanto è il nome piu corto e l'età è maggiore di 40. Perchè non lo fa? qualcuno mi può aiutare? Grazie