Dateiname bei einem Pfad ändern



  • 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


Anmelden zum Antworten