Bonjour,
est ce que quelqu'un pourrait m'indiquer,comment il faut que je m'y prenne pour sauvegarder ce que j'ai tapé,sur la ligne de commande,dans un fichier.
Merci
Bonjour,
est ce que quelqu'un pourrait m'indiquer,comment il faut que je m'y prenne pour sauvegarder ce que j'ai tapé,sur la ligne de commande,dans un fichier.
Merci
Bonjour
je vous invite à visiter ce lien http://c.developpez.com/cours/
A+
On utilise pour ouvrir un fichier
Exemple:FILE *fopen(const char *path, const char *mode);
Ensuite, on utilise pour écrire dans un fichier fprintf qui marche comme printf mais tu mets le pointeur de fichier en premier argument.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 FILE *f = fopen("test.txt","w"); //pour ouvrir le fichier test.txt en écriture
Et finalement, tes arguments se trouvent dans un tableau généralement nommé char **argv dont la première dimension (donc le nombre d'arguments) est donné par une variable généralement appelée argc...int fprintf(FILE *stream, const char *format, ...);
Et on les obtient en écrivant le main comme ceci:
Avec tous ces éléments, tu devrais y arriver...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 int main(int argc, char **argv) { printf("Il y a %d arguments passés par la ligne de commande\n",argc); return 0; }
Jc
Si j'écris plusieurs lignes ,est ce que c'est mieux d'utiliser fgets ou bien de rester avec char**argvEnvoyé par fearyourself
J'ai l'impression qu'il y a confusion.Envoyé par Gryzzly
argv est un tableau a deux dimensions. Un tableau de chaines en somme. Tu pourrais ecrire le contenu de ce tableau dans un fichier en le parcourant ligne par ligne. Ce tableau depend de la maniere dont a ete appelle ton programme.
Ex :
Ton tableau va ressembler a ca:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $> ./my_prog oh qu il est beau mon petit programme
Donc si ton programme est appele de cette facon, il faut que tu utilises argv: que tu le parcoure et que tu l'ecrive, element par element.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 argv[0] = "my_prog" argv[1] = "oh" argv[2] = "qu" argv[3] = "il" etc ...
Ca ressemble a ca :
Exemple de fonctionnement:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 #include <stdio.h> int my_strlen(char *str) { int size; size = 0; while (str[size] != 0) size++; return (size); } int main(int argc, char **argv) { FILE *file; int i; char *separator; separator = "\n"; file = fopen("my_file", "w"); for (i = 1; i < argc; i++) { fwrite(argv[i], sizeof(*(argv[i])), my_strlen(argv[i]), file); fwrite(separator, sizeof(*separator), my_strlen(separator), file); } fclose(file); return (0); }
Rien de bien sorcier : on ouvre le fichier, on parcours argv (en commencant par 1 puisque argv[0] est le nom du programme, et en finissant a argc - 1 puisque argc est le nombre d'arguments et que la numerotation d'un tableau commence a 0.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23$> ./my_prog il etait un petit navire euh il etait un petit navire euh qui n avait ja ja jamais navigue $> cat my_file <-- affiche le contenu d'un fichier il etait un petit navire euh il etait un petit navire euh qui n avait ja ja jamais navigue
fgets() sert completement a autre chose :
C'est un fontion tres gentille qui lit une ligne dans un fichier.
Une ligne se terminant par un '\n' ou la fin du fichier.
On peut l'utiliser pour lire sur l'entree standard : le clavier.
Dans ce cas ton programme possede un tout autre fonctionnement: a chaque fois que l'utilisateur tape une ligne, elle est entree dans le fichier.
Mais pour en revenir a ta question initiale, fgets() ne te sert a rien en l'occurence.
Merci de vos réponses.
Et pour faire l'inverse;à savoir lire des données à partir d'un fichier,comment faut 'il faire.
Utiliser fgets, cette fois-ci.
pour l'écriture, c'est peut-être un peu compliqué non ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 FILE *f = fopen("petit_navire.txt", "r"); if (f != NULL) { char buf[256]; while(fgets-buf, sizeof(buf), f) != NULL) { // je chante la chanson } fclose(f); }
Envoyé par Jack_serious
Code : Sélectionner tout - Visualiser dans une fenêtre à part fprintf(file, "%s\n", argv[i]).
"La haine seule fait des choix" - Koan Zen
"Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
"Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
Faites du Prolog, ça vous changera les idées !
Ma page Prolog
Mes codes sources commentés
Mon avatar : La Madeleine à la veilleuse de Georges de La Tour
Attention, j'ai fait une faute de frappe :
C'est
Code : Sélectionner tout - Visualiser dans une fenêtre à part while(fgets-buf, sizeof(buf), f) != NULL)
Code : Sélectionner tout - Visualiser dans une fenêtre à part while(fgets(buf, sizeof(buf), f) != NULL)
"La haine seule fait des choix" - Koan Zen
"Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
"Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
Faites du Prolog, ça vous changera les idées !
Ma page Prolog
Mes codes sources commentés
Mon avatar : La Madeleine à la veilleuse de Georges de La Tour
Hum, en principe, on ne répond pas aux questions basiques qui ont leurs réponses dans n'importe quel cours ou livre de C. C'est à toi d'apprendre les bases.Envoyé par Gryzzly
http://www.linux-kheops.com/doc/ansi-c/Introduction_ANSI_C.htm
Nous, on est plutôt là pour d'éventuelles corrections et des techniques plus ou moins avancées.
Tout a fait exact.Envoyé par Trap D
C'est purement personnel je ne suis pas un habitue des fonctions de lecture/ecriture formatees.
Partager