?
Hallo,
also ich erhalte per Konsolen-Kommande einen Pfad zu einer Datei.
Dabei möchte ich jetzt den Dateinamen ändern.
//includes
int main(int argc, char *argv[]) {
//argv[1]: Pfad der Datei
//Der neue Name
char name[] = "ein_test";
char *slash, *backslash;
char *basename;
//Ueberpruefen ob / oder \ das letzte Zeichen ist
slash = strrchr(argv[1],'/');
backslash = strrchr(argv[1],'\\');
//basename auf Dateiname (/datei.txt) setzen
if(slash == NULL && backslash == NULL)
basename = NULL;
else if((backslash - slash) > 0)
basename = backslash;
else
basename = slash;
char *new_path;
new_path = (char *)malloc(strlen(argv[1])-strlen(basename) + strlen(name) + 2);
if(basename != NULL) {
strncpy(new_path,argv[1],strlen(argv[1])-strlen(basename));
strcat(new_path,"\\");
strcat(new_path,name);
} else {
new_path = name;
}
printf("%s",new_patch);
return 0;
}
Ich wollte mal fragen, ob die malloc-Anweisung so richtig ist.
Denn irgendwie wird nur manchmal der Pfad ausgegeben, manchmal endet das Programm einfach so.
MFG