Command-line Argumente, Lesen einer Datei
Wenn ich eingegeben in die Befehl-Linie
C: myprogram myfile.txt
Wie kann ich myfile in meinem Programm. Muss ich scanf oder ist es eine willkürliche Art und Weise, auf Sie zuzugreifen.
Meine Frage ist, wie kann ich die myfile.txt in meinem Programm.
int
main(){
/* So in this area how do I access the myfile.txt
to then be able to read from it./*
- Sie öffnen es mit
fopen()
oderopen()
. - Ist deine Frage, wie man Dateien Lesen, oder darüber, wie man den Dateinamen aus der Liste der Argumente?
- Beachten Sie, dass wenn Sie auf einem unix-artigen system, das Sie laufen konnte Sie Ihr Programm
myprogram < myfile
und den Inhalt der Datei eingespeist werden stdin.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie
int main(int argc, char **argv)
als Ihre wichtigste Funktion.argc
- wird die Anzahl der input-Argumente auf Ihrem Programm.argv
- wird ein Zeiger auf alle input-Argumente.So, wenn Sie in
C:\myprogram myfile.txt
um das Programm auszuführen:argc
2argv[0]
wirdmyprogram
.argv[1]
wirdmyfile.txt
.Mehr details finden Sie hier
Lesen der Datei:
FILE *f = fopen(argv[1], "r"); //"r" for read
Zum öffnen der Datei in anderen Modi, Lesen Sie diese.
txt
Datei-Namen, um eine andere Funktion, nicht diemain
?Erklären, Ihre Haupt-wie dies
int main(int argc, char* argv [])
argc angegebene Anzahl von Argumenten (wenn keine Argumente übergeben werden, es ist gleich 1 für den Namen des Programms)
argv ist ein Zeiger auf ein array von strings (mit mindestens einem Mitglied - der name des Programms)
würden Sie Lesen die Datei von der Befehlszeile aus wie folgt:
C:\my_program input_file.txt
Einrichten eines Datei-handle:
File* file_handle;
Öffnen Sie die file_handle zum Lesen:
file_handle = fopen(argv[1], "r");
fopen liefert einen Zeiger auf eine Datei oder
NULL
wenn die Datei nicht vorhanden ist. argvEins, der die Datei enthält, die Sie Lesen möchten als argument"r" bedeutet, dass Sie die Datei öffnen für Lesen (mehr über die anderen Modi hier)
Lesen Sie den Inhalt mit zum Beispiel fgets:
fgets (buffer_to_store_data_in , 50 , file_handle);
char *
Puffer zum speichern der Daten (wie ein array von chars), das zweite argument gibt an, wie viel zu Lesen und das Dritte ist ein Zeiger auf eine DateiSchließlich schließen Sie den Griff
fclose(file_handle);
Alle fertig 🙂
Dies ist die Programmierung 101 Weg. Es braucht eine Menge für selbstverständlich, und es macht keinen Fehler-checking an alle! Aber für den Anfang reicht es.
Kommandozeilen-Argumente sind einfach nur C-strings. Sie können tun, was Sie wollen mit Ihnen. In Ihrem Fall möchten Sie vielleicht, um eine Datei öffnen, Lesen etwas von ihm, und schließen Sie es.
Vielleicht finden Sie diese Frage (und Antwort) sinnvoll.
Alle der Vorschlag, den Sie erhalten, über die Verwendung der Befehlszeile ist korrekt,aber
Es klingt für mich, können Sie auch prüfen, ein typisches Muster, das ist, Lesen Sie die
stdin
anstelle einer Datei, dann fahren Sie Ihre app von Rohrleitungen, zum Beispiel Katzemyfile > yourpgm
.Sie dann verwenden können
scanf
Lesen von stdin.In analoger Weise kann man
stdout/stderr
zum erzeugen der Ausgabe.