Alcune considerazioni:
1)Indenta sempre il codice;
2)Non eseguire 4 volte la strlen nel for, invece fai così:
Onde evitare di calcolare più volte del dovuto la lunghezza della stringa, aumentando così la complessità temporale del programma;codice:const unsigned int length=strlen(nome1); for(i=n;i<=length;i++,j++) temp[j]=nome1[i];
3)Prevedi anche il caso in cui l' input non sia corretto, ad esempio l' utente potrebbe digitare "pippo.tx" invece di "pippo.txt", in tal caso puoi stampare un messaggio di errore:
Nel main puoi eseguire il controllo:codice:int find(char* str, char x) // cerca il carattere x nella stringa, ritorna l' indice, oppure -1 se // tale carattere non è presente { int result=-1; const int length=(int)strlen(str); for(int i=0; i<length && result==-1; i++) { if(str[i]==x) result=i; } return result; }
Nel tuo caso penso che il problema sia un input scorretto, se provi ad eseguire il codice digitando "pippo.txt" ti stampa come risultato "pippo.(meta).txt", non vedo problemi.codice:int index=find(nome1,'.'); if(index==-1 || index!= (strlen(nome1)-4) ) { fprintf(stderr,"input non corretto"); exit(EXIT_FAILURE); }

Rispondi quotando