Zdravím,
píšu program na přejmenování souborů, ale mám takovej malej problém. Program má přepsat v názvu všechny mezery za tečky, ale stažený soubory mají v názvu různý divný znaky místo háčků a čárek. Třeba "Stargate SG1 4-03 Odkaz ataniků (Upgrades).avi" místo "Stargate SG1 4-03 Odkaz ataniků (Upgrades).avi". No a program mi ty soubory nechce do sebe načíst. Ideální by bylo, kdyby uměl i ty znaky předělat zpět na znaky s diakritikou. Tady je kód co mám teď.
#include <cstdlib>
#include <iostream>
#include <dirent.h>
#include <stdio.h>
#include <windows.h>
int main(void)
{
DIR *d;
struct dirent *dir;
d = opendir(".");
if (d)
{
char * oldname = new char;
char newname[1024];
printf("Vitejte v Kolcekove renaimeru!\n");
printf("Chcete spustit automaticke prejmenovani vsech souboru ve slozce?(a/n): ");
char run;
scanf("%c", &run);
if(run=='A'||run=='a')
{
while ((dir = readdir(d)) != NULL)
{
if( strcmp( dir->d_name, "." ) == 0 ||
strcmp( dir->d_name, ".." ) == 0 )
{
continue;
}
oldname = dir->d_name;
unsigned int i, result;
for(i=0; i<strlen(oldname); i++)
{
*(newname+i) = *(oldname+i);
}
*(newname+i)='\0';
for(i=0; i<strlen(oldname); i++)
{
if(*(oldname+i)==0x20)
{
*(newname+i)='.';
}
}
result = rename(oldname, newname);
if(result==0)
{
printf("Soubor %s prejmenova na %s\n", oldname, newname);
}
}
closedir(d);
}else if(run=='n'||run=='N')
{
printf("V tom pripade se tedy ukoncim!\n");
system("PAUSE");
return 0;
}else{
printf("Tato volba neni naprogramovana! Ukoncuji program\n");
system("PAUSE");
return 0;
}
}
system("PAUSE");
return(0);
}
Prosím o radu
BTW věci ohledně optimalizace a toho, že ten kód je prasárna neřešte