Dateiname aus argv[] lesen
Dateiname aus argv[] lesen
Hallo Ich möchte den Dateinamen aus argv[] extrahieren.
geht das nur mit !strcmp oder wie?
genauer gesagt aus argv[1]
Danke
geht das nur mit !strcmp oder wie?
genauer gesagt aus argv[1]
Danke
Re: Dateiname aus argv[] lesen
Hi,
der Programmaufruf steht in argv[0], dahinter folgen die optionalen Parameter.
Das läßt sich als String übergeben:
printf("%s",argv[0]);
der Programmaufruf steht in argv[0], dahinter folgen die optionalen Parameter.
Das läßt sich als String übergeben:
printf("%s",argv[0]);
Re: Dateiname aus argv[] lesen
Dein Betriebssystem dürfte dir Funktionen dafür anbieten. Unter Linux bekommst du aus der libgen.h die Funktion "basename".
- cloidnerux
- Moderator
- Beiträge: 3125
- Registriert: Fr Sep 26, 2008 4:37 pm
- Wohnort: Ram (Gibts wirklich)
Re: Dateiname aus argv[] lesen
argv ist ein Array von Arrays, das die einzelnen Teile des Funktionsaufrufes beinhaltet. Dein Betriebssystem zerteilt den AufrufHallo Ich möchte den Dateinamen aus argv[] extrahieren.
geht das nur mit !strcmp oder wie?
Code: Alles auswählen
myProg /home/user/file -t 123 -v
Daher ein Aufruf wie oben gezeigt wird in die Strings
Code: Alles auswählen
myProg, /home/user/file, -t, 123, -v
Was du jetzt machen musst, ist die Liste der Strings durchzugehen und dir deine Parameter zu extrahieren.
Das kannst du mit strcmp(String compare) machen, wenn du z.B einen Parameter mit einem Text vergleichen willst.
In deinem fall kannst du es etwas einfacher machen.
Wenn es keine weiteren Parameter gibt, kannst du argv[1] direkt in fopen nutzten.
Sinnvollerweise sollte man das aber nicht machen, ohne vorher zu überprüfen ob es sich tatsächlich um einen validen Pfad handelt.
Redundanz macht wiederholen unnötig.
quod erat expectandum
quod erat expectandum
- Xin
- nur zu Besuch hier
- Beiträge: 8862
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: Dateiname aus argv[] lesen
siehe c:tutorial:params
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Re: Dateiname aus argv[] lesen
Also ich habe in argv[1] den kompletten Pfad mit Parametrierter Datei
Printf (" Argument 1 ist: %s",argv[1] ) ergibt in der Ausgabe
Das was ihr meint ist, wenn ich das Programm mit parametern aufrufe. Anders sieht es aber aus, wenn ich die zu bearbeitende Datei (einlesen.txt) auf meine exe ziehe. dann ist der komplette Pfad drinne
Printf (" Argument 1 ist: %s",argv[1] ) ergibt in der Ausgabe
Hier möchte ich halt nur den Namen der eingelesenen Datei "einlesen.txt" extrahierenArgument 1 ist: c:\Programmieren\test\einlesen.txt
Das was ihr meint ist, wenn ich das Programm mit parametern aufrufe. Anders sieht es aber aus, wenn ich die zu bearbeitende Datei (einlesen.txt) auf meine exe ziehe. dann ist der komplette Pfad drinne
- Xin
- nur zu Besuch hier
- Beiträge: 8862
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: Dateiname aus argv[] lesen
Wie willst Du die Datei auch sonst finden?
Wenn Du nur den Dateinamen haben willst, musst Du ihn halt aus dem Pfad extrahieren.
Wenn Du nur den Dateinamen haben willst, musst Du ihn halt aus dem Pfad extrahieren.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Re: Dateiname aus argv[] lesen
Wofür brauchst du denn nur den Namen der Datei, ohne den kompletten Pfad? So kannst du sie nämlich nicht öffnen.
http://www.proggen.org/doku.php?id=c:lib:string:strtok
Code: Alles auswählen
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
int main( int argc, char *argv[] )
{
char delimiter[] = "\\";
char *token;
char *last;
printf ("Zerlege Pfad: %s\n", argv[1] );
token = strtok( argv[1], delimiter );
while( token )
{
last = token;
token = strtok( NULL, delimiter );
}
printf( "Ausgabe letzter Teil-String: %s\n", last );
return EXIT_SUCCESS;
}
Siehe auch:$ ./path c:\\Programmieren\\test\\einlesen.txt
Zerlege Pfad: c:\Programmieren\test\einlesen.txt
Ausgabe letzter Teil-String: einlesen.txt
http://www.proggen.org/doku.php?id=c:lib:string:strtok
Re: Dateiname aus argv[] lesen
Unter Windows kannst du es auch mit _splitpath machen.
Oder plattformunabhängig (win oder linux) mit Standard-C:
Oder plattformunabhängig (win oder linux) mit Standard-C:
Code: Alles auswählen
char *pfile;
pfile = argv[1] + strlen(argv[1]);
for (; pfile > argv[1]; pfile--)
{
if ((*pfile == '\\') || (*pfile == '/'))
{
pfile++;
break;
}
}
- Xin
- nur zu Besuch hier
- Beiträge: 8862
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: Dateiname aus argv[] lesen
Das funktioniert in 99% der Fälle, sofern unter Linux eine Datei nicht den Backslash enthält. Da dürfte Linux nämlich recht schmerzfrei sein.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.