Dateinamen ohne Endung übergeben



  • Wenn du den Ursprungsdateinamen nicht mehr brauchst, kannst du es machen, wie von Swordfish beschrieben. Wenn du ihn noch brauchst, musst du umkopieren. Dann kannst du die von mir erwähnten Funktionen nutzen.

    Ich habe die Vermutung, dass du nicht weißt, was Eingabe=Ausgabe hier wirklich macht. Mach das doch mal, dann änderst du ein paar Zeichen in Ausgabe, und dann guckst du dir noch mal Eingabe an. Überrascht? ;

    EDIT: Wo wird Eingabe denn überhaupt was zugewiesen? In der Funktion? Gar nicht? 😕



  • Tut mir leid, in der main-Funktion fehlte noch
    Eingabe=argv[1];

    Und nach dem Kompilieren rufe ich über die Konsole Programm auf, danach steht meine Eingabedatei und die Ausgabe klappt auch wenn ich die Ausgabe vordefinier.
    Das mit strrchr hab ich auch schon probiert, den Punkt kann ich raussuchen, nur wie mach ich das mit dem kopieren in die Ausgabe jetzt? Ich kann doch jetzt nicht einfach dem Programm sagen das es alles vor diesem Punkt als Outfile nehm soll oder?



  • Kleine Schritt-fürSchritt-Demo, ganz ohne Kram, der es vielleicht zu kompliziert machen würde:

    char source[]="test.txt";
    	char dest[1024]={0,};  //hier machen wir es uns einfach und definieren einen großen Zielstring
    	char *dotpos=strrchr(source,'.');  //Zeiger auf den letzten Punkt holen
    	size_t copylen=dotpos-source;  //die Differenz der beiden Zeiger ist die Anzahl der Zeichen, die wir kopieren wollen (wir lassen ".txt" weg)
    	strncpy(dest,source,copylen);  //kopieren, fertig ("test" wurde kopiert"). Du darfst nun deine eigene Extension mit strcat anhängen.
    


  • Vielen Dank!
    Jetzt seh ich mein Fehler. Nur wenn ich das ganze jetzt kompiliere kommt immer Speicherzugriffsfehler. Weiß jemand was hier falsch ist? Also Zugriffsrechte auf alles hab ich, genug Speicher ist auch vorhanden.



  • ...



  • Die Umwandlung alleine stimmt, seh ja selber die ausgegebene Datei. @swordfish

    Nur leider zeigt er mir bei 'strncpy' für copylen ein Fehler an, der Compiler nimmt es nur an wenn dort eine Zahl da steht.



  • Herrje, zeig doch einfach mal Code. Du wurdest doch jetzt schon oft genug gefragt. Du machst irgendwas falsch, willst aber nicht zeigen, was. Anhand deiner dürftigen Beschreibung lässt sich das schlecht erraten.



  • Mein Problem ist nur das ich mit dem Tablet online bin und auf dem Laptop alles schreib weil das eigentlich nicht meiner ist, ich will nicht die Zeilen abtippen. Aber ich hab den Quelltext so ähnlich wie hier - http://ffmpeg.org/doxygen/trunk/decoding__encoding_8c_source.html - Beim Thema Audio-Decodierung ab Zeile 236.

    Meine main-Funktion ist kurz wie vorhin beschrieben Plus dem zusätzlichen Code.



  • Sorry, aber das ist Käse. Ich werde mir nicht aus mehreren Quellen zusammenflanschen, was eventuell so ungefähr dein Code sein könnte. Wenn du deinen Code nicht per Copy&Paste hier ins Forum bringen kannst, dann gibt's nur ein paar Debugging-Tipps:

    Klapper doch mal jede Zeile mit dem Debugger ab. Beispiel strncpy: Sind die beiden Zeiger, die du übergibst, gültig? Welchen Wert haben sie? Worauf zeigen Sie? Welchen Wert hat copylen?



  • Thomas-W schrieb:

    Beim Thema Audio-Decodierung ab Zeile 236.

    LOL



  • Hab jetzt kein Fehler mehr, läuft alles wunderbar. Der Speicherfehler lag daran weil ich dieselbe Variable mehrmals benutzt hab 😡
    Und ich hab es nicht richtig definiert gehabt mein char Ausgabe.
    Danke nochmal für die Hilfe und tut mir leid für meine unkonkreten Angaben.


Anmelden zum Antworten