Originariamente inviato da Who am I
Alcune considerazioni:
1)Indenta sempre il codice;
2)Non eseguire 4 volte la strlen nel for, invece fai così:
codice:
const unsigned int length=strlen(nome1);
for(i=n;i<=length;i++,j++)
temp[j]=nome1[i];
Onde evitare di calcolare più volte del dovuto la lunghezza della stringa, aumentando così la complessità temporale del programma;
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:
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 main puoi eseguire il controllo:
codice:
int index=find(nome1,'.');
if(index==-1 || index!= (strlen(nome1)-4) )
{
fprintf(stderr,"input non corretto");
exit(EXIT_FAILURE);
}
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.