Wenn ich in die Kommandozeile eingetreten bin C: myprogram myfile.txt
Wie kann ich myfile in meinem Programm verwenden? Muss ich es scannen oder gibt es eine willkürliche Möglichkeit, darauf zuzugreifen.
Meine Frage ist, wie ich die myfile.txt in meinem Programm verwenden kann.
int
main(){
/* So in this area how do I access the myfile.txt
to then be able to read from it./*
Sie können int main(int argc, char **argv)
als Ihre Hauptfunktion verwenden.
argc
- wird die Anzahl der Eingabeargumente für Ihr Programm sein.argv
- ist ein Zeiger auf alle Eingabeargumente.
Wenn Sie also C:\myprogram myfile.txt
Eingegeben haben, um Ihr Programm auszuführen:
argc
wird 2 seinargv[0]
Ist myprogram
.argv[1]
Wird myfile.txt
Sein.Weitere Details hier zu finden
So lesen Sie die Datei:FILE *f = fopen(argv[1], "r"); // "r" for read
Zum Öffnen der Datei in anderen Modi lesen Sie dies .
Deklarieren Sie Ihre Hauptleitung so
int main(int argc, char* argv [])
argc gibt die Anzahl der Argumente an (wenn keine Argumente übergeben werden, ist der Name des Programms gleich 1)
argv ist ein Zeiger auf ein Array von Strings (mit mindestens einem Member - dem Namen des Programms)
sie würden die Datei folgendermaßen von der Befehlszeile aus lesen: C:\my_program input_file.txt
Richten Sie ein Dateihandle ein:
File* file_handle;
Öffne das file_handle zum Lesen:
file_handle = fopen(argv[1], "r");
Lesen Sie den Inhalt zum Beispiel mit fgets :
fgets (buffer_to_store_data_in , 50 , file_handle);
char *
-Puffer zum Speichern der Daten (z. B. ein Array von Zeichen), das zweite Argument gibt an, wie viel gelesen werden soll, und das dritte ist ein Zeiger auf eine DateiZum Schluss den Griff schließen
fclose(file_handle);
Alles erledigt :)
Dies ist der Programmierweg 101. Es braucht eine Menge für selbstverständlich und führt überhaupt keine Fehlerprüfung durch! Aber es wird dich anfangen.
/* this has declarations for fopen(), printf(), etc. */
#include <stdio.h>
/* Arbitrary, just to set the size of the buffer (see below).
Can be bigger or smaller */
#define BUFSIZE 1000
int main(int argc, char *argv[])
{
/* the first command-line parameter is in argv[1]
(arg[0] is the name of the program) */
FILE *fp = fopen(argv[1], "r"); /* "r" = open for reading */
char buff[BUFSIZE]; /* a buffer to hold what you read in */
/* read in one line, up to BUFSIZE-1 in length */
while(fgets(buff, BUFSIZE - 1, fp) != NULL)
{
/* buff has one line of the file, do with it what you will... */
printf ("%s\n", buff); /* ...such as show it on the screen */
}
fclose(fp); /* close the file */
}
Befehlszeilenargumente sind nur reine C-Zeichenfolgen. Sie können mit ihnen machen, was Sie wollen. In Ihrem Fall möchten Sie vielleicht eine Datei öffnen, etwas davon lesen und schließen.
Diese Frage (und Antwort) könnte nützlich sein.
Alle Vorschläge, die Sie zur Verwendung der Befehlszeile erhalten haben, sind korrekt, aber Es klingt für mich auch, dass Sie ein typisches Muster verwenden können, das die stdin
-Datei anstelle einer Datei liest, und dann Ihre App durch Pipeing-Vorgänge (z. B. cat) steuert myfile > yourpgm
. Sie können dann scanf
verwenden, um aus dem Standardeintrag zu lesen . Auf analoge Weise können Sie stdout/stderr
verwenden, um die Ausgabe zu erzeugen.