Arguments de ligne de commande, lecture d'un fichier
Si je suis entré dans la ligne de commande
C: myprogram myfile.txt
Comment puis-je utiliser monfichier dans mon programme. Dois-je scanf il ou est-il arbitraire de l'accès.
Ma question est comment puis-je utiliser l'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 l'ouvrez avec
Est de votre question sur la façon de lire les fichiers, ou sur la façon d'obtenir le nom de fichier de la liste d'arguments?
Notez que si vous êtes sur un système de type unix, vous pouvez exécuter votre programme comme
fopen()
ou open()
.Est de votre question sur la façon de lire les fichiers, ou sur la façon d'obtenir le nom de fichier de la liste d'arguments?
Notez que si vous êtes sur un système de type unix, vous pouvez exécuter votre programme comme
myprogram < myfile
et le contenu du fichier sera envoyé dans stdin.
OriginalL'auteur user2440329 | 2013-06-01
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
int main(int argc, char **argv)
que votre fonction principale.argc
- sera le nombre d'arguments d'entrée de votre programme.argv
- sera un pointeur vers tous les arguments d'entrée.Donc, si vous avez entré
C:\myprogram myfile.txt
pour exécuter votre programme:argc
sera de 2argv[0]
seramyprogram
.argv[1]
seramyfile.txt
.Plus de détails peuvent être trouvés ici
Pour lire le fichier:
FILE *f = fopen(argv[1], "r"); //"r" for read
De l'ouverture du fichier dans les autres modes, lire ce.
txt
nom de fichier à une autre fonction, non pas à lamain
?OriginalL'auteur srikfreak
Déclarer votre principale comme ce
int main(int argc, char* argv [])
argc spécifié le nombre d'arguments (si aucun argument n'est passé, il est égal à 1 pour le nom du programme)
argv est un pointeur vers un tableau de chaînes de caractères (contenant au moins l'un des membres - le nom du programme)
vous de lire le fichier à partir de la ligne de commande comme ceci:
C:\my_program input_file.txt
Définir un descripteur de fichier:
File* file_handle;
Ouvrir le file_handle pour la lecture:
file_handle = fopen(argv[1], "r");
fopen renvoie un pointeur vers un fichier ou
NULL
si le fichier n'existe pas. argvUn, contient le fichier que vous souhaitez lire comme un argument"r" signifie que vous ouvrez le fichier pour le lire (en savoir plus sur les autres modes de ici)
Lire le contenu en utilisant par exemple fgets:
fgets (buffer_to_store_data_in , 50 , file_handle);
char *
de la mémoire tampon pour stocker les données (comme un tableau de caractères), le deuxième argument indique comment beaucoup à lire, et le troisième est un pointeur vers un fichierEnfin fermer la poignée
fclose(file_handle);
Tous fait 🙂
OriginalL'auteur Nobilis
C'est la Programmation 101. Il en faut beaucoup pour acquis, et il ne fait pas de vérification des erreurs à tous! Mais il vous permettra de commencer.
OriginalL'auteur egrunin
Arguments de ligne de commande sont tout simplement C-strings. Vous pouvez faire ce que vous voulez avec eux. Dans votre cas, vous voudrez ouvrir un fichier, lire quelque chose d'elle et fermer.
Vous trouverez peut-être ce question (et réponse) utile.
OriginalL'auteur akalenuk
Tous la suggestion que vous avez reçu sur l'utilisation de la ligne de commande sont correctes,mais
Il me semble que vous pouvez également envisager d'utiliser un modèle typique qui est de lire le
stdin
au lieu d'un fichier, puis voiture à votre application par des conduites, par exemple chatmyfile > yourpgm
.Vous pouvez ensuite utiliser
scanf
à lire à partir de stdin.D'une manière analogue, vous pouvez utiliser
stdout/stderr
pour produire la sortie.OriginalL'auteur Felice Pollano