Si je suis entré en ligne de commande C: myprogram myfile.txt
Comment utiliser mon fichier dans mon programme? Dois-je le scanner ou existe-t-il un moyen arbitraire d'y accéder?.
Ma question est comment puis-je utiliser le myfile.txt dans mon programme.
int
main(){
/* So in this area how do I access the myfile.txt
to then be able to read from it./*
Vous pouvez utiliser int main(int argc, char **argv)
comme fonction principale.
argc
- sera le nombre d'arguments d'entrée de votre programme.argv
- sera un pointeur sur tous les arguments en entrée.
Donc, si vous avez entré C:\myprogram myfile.txt
pour exécuter votre programme:
argc
sera 2argv[0]
sera myprogram
.argv[1]
sera myfile.txt
.Plus de détails peut être trouvé ici
Pour lire le fichier:FILE *f = fopen(argv[1], "r"); // "r" for read
Pour ouvrir le fichier dans d'autres modes, lisez ceci .
Déclarez votre main comme ça
int main(int argc, char* argv [])
argc a spécifié le nombre d'arguments (si aucun argument n'est passé, il vaut 1 pour le nom du programme)
argv est un pointeur sur un tableau de chaînes (contenant au moins un membre - le nom du programme)
vous liriez le fichier à partir de la ligne de commande comme suit: C:\my_program input_file.txt
Mettre en place un handle de fichier:
File* file_handle;
Ouvrez le file_handle pour lire:
file_handle = fopen(argv[1], "r");
Lisez le contenu en utilisant par exemple fgets :
fgets (buffer_to_store_data_in , 50 , file_handle);
char *
pour stocker les données (un tableau de caractères, par exemple), le deuxième argument spécifie le montant à lire et le troisième est un pointeur sur un fichierEnfin fermez la poignée
fclose(file_handle);
Terminé :)
C'est la manière de programmer 101. Cela prend beaucoup pour acquis, et cela ne fait aucune vérification d'erreur! Mais ça va vous aider à démarrer.
/* 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 */
}
Les arguments en ligne de commande sont simplement des C-strings. Vous pouvez faire ce que vous voulez avec eux. Dans votre cas, vous voudrez peut-être ouvrir un fichier, en lire un extrait et le fermer.
Vous pourriez trouver cette question (et sa réponse) utile.
Toutes les suggestions que vous avez reçues concernant l’utilisation de la ligne de commande sont correctes, mais Il me semble que vous pouvez également utiliser un modèle typique qui lit la stdin
au lieu d’un fichier, puis pilotez votre application par piping, par exemple cat. myfile > yourpgm
. Vous pouvez ensuite utiliser scanf
pour lire à partir de stdin . De manière analogue, vous pouvez utiliser stdout/stderr
pour générer la sortie.