PDA

View Full Version : [c++] non rinomina...


mamo139
09-10-2006, 16:33
il codice serve a rinominare delle canzoni e si compila perfettamente...
genera perfettamente un altra stringa col nuovo nome per ogni canzone... l'unico comando che sembra non funzionare è l'ultimo, ovvero renamedati_file.cFileName,nuovo_nome);.. come mai??? :muro:

grazie ciao


int namen(void) {


WIN32_FIND_DATA dati_file;
HANDLE ricerca = FindFirstFile("*",&dati_file);
//printf("%s\n",dati_file.cFileName);


while (FindNextFile(ricerca,&dati_file) != 0) {

int patch_length = strlen(dati_file.cFileName);
// controllo se è file musicale
if (
/*mp3*/ (dati_file.cFileName[(patch_length-1)] == '3' && dati_file.cFileName[(patch_length-2)] == 'p' && dati_file.cFileName[(patch_length-3)] == 'm' && dati_file.cFileName[(patch_length-4)] == '.')
/*wma*/ ||(dati_file.cFileName[(patch_length-1)] == 'a' && dati_file.cFileName[(patch_length-2)] == 'm' && dati_file.cFileName[(patch_length-3)] == 'w' && dati_file.cFileName[(patch_length-4)] == '.')
/*wav*/ ||(dati_file.cFileName[(patch_length-1)] == 'v' && dati_file.cFileName[(patch_length-2)] == 'a' && dati_file.cFileName[(patch_length-3)] == 'w' && dati_file.cFileName[(patch_length-4)] == '.')
){

char nuovo_nome[100];
int x=0, segnalatore_spazio =1, segnalatore_titolo =0, segnalatore_end =0;
while (x != patch_length){
if (dati_file.cFileName[x] != ' ' && dati_file.cFileName[x] != '-' && dati_file.cFileName[x] != '(' && dati_file.cFileName[x] != ')'){
//mettere maiuscola dopo spazio prima del -
if (segnalatore_spazio == 1 && segnalatore_titolo == 0 && segnalatore_end == 0){
nuovo_nome[x] = toupper(dati_file.cFileName[x]);
segnalatore_spazio = 0;
}
else if (segnalatore_spazio == 1 && segnalatore_titolo == 1 && segnalatore_end == 0){
nuovo_nome[x] = toupper(dati_file.cFileName[x]);
segnalatore_spazio = 0;
}
else {
nuovo_nome[x] = tolower(dati_file.cFileName[x]);
}
} else nuovo_nome[x] = dati_file.cFileName[x]; //salvataggio a parte per - SPACE ( )

if(segnalatore_titolo == 0) //questo blocca il conteggio spazi dopo il -
if(dati_file.cFileName[x] == ' ' || dati_file.cFileName[x] == '(' || dati_file.cFileName[x] == ')') segnalatore_spazio = 1;
if(dati_file.cFileName[x] == '-') {segnalatore_titolo = 1;
segnalatore_spazio = 1;} //questo per mettere una maiuscola alla prima dopo -
if(dati_file.cFileName[x] == '.') segnalatore_end = 1;

x++;
}
nuovo_nome[patch_length] = '\0';

rename(dati_file.cFileName,nuovo_nome);

}

}

return 0;
}

mamo139
09-10-2006, 17:31
risolto, in realtà rinomina alla perfezione... basta solo uscire e ritornare nella cartella... :D

Marco Giunio Silano
10-10-2006, 08:25
risolto, in realtà rinomina alla perfezione... basta solo uscire e ritornare nella cartella... :D

o schiacciare F5 :D