Ecrire la valeur ascii dans un fichier - C - Programmation
Marsh Posté le 21-09-2006 à 17:48:36
Guyome666 a écrit :
|
Pourquoi utilises-tu des fonctions systèmes ? Il y a des fonctions standards pour ça.
fopen()
fprintf()...
déclarées dans <stdio.h>
Marsh Posté le 21-09-2006 à 19:39:45
Guyome666 a écrit :
|
Que contient "a" ? Probablement une valeur numérique comme 65 ou 112. Bon. Tu écris cette valeur dans un fichier, il n'y a pas de miracle. Le fichier stocke cette valeur telle qu'elle, de façon binaire (tu en auras la preuve si tu ouvres ton fichier avec un éditeur hexa).
Toi, tu voudrais écrire une représentation en mode texte de cette valeur. Autrement dit, si "a" contient "112", tu voudrais que ton fichier contienne les caractères '1', '1' et '2' (si j'ai bien compris) afin de pouvoir l'ouvrir en mode "texte".
T'as 2 solutions :
1) tu utilises une zone "tampon" suffisemment grande tans laquelle tu écris ton "112" puis tu écris ce tampon dans le fichier
|
2) tu utilises la fonction "fprintf()" qui te permet d'écrire ce que tu veux de façon "texte" dans un fichier (un peu comme le fait "printf()" à l'écran). Malheureusement, "fprintf()" ne marche qu'avec des fichiers ouvert par "fopen()" et non "open()".
|
Marsh Posté le 22-09-2006 à 17:34:24
Merci, c´est exactement ce que je cherchais, maintenant ça fonctionne parfaitement.
Pourquoi est-ce que j´utilise des fonctions système?
Parceque dans le tutorial que j´ai suivi http://www-ipst.u-strasbg.fr/pat/program/tpc.htm , ils disent "C'est la méthode la plus efficace et rapide pour stocker et récupérer des données sur fichier" et qu´en tant que débutant je leur ai fait confiance
Marsh Posté le 22-09-2006 à 17:47:42
Guyome666 a écrit : Merci, c´est exactement ce que je cherchais, maintenant ça fonctionne parfaitement. |
Si le gars justifie rien, ca n'engage que lui, et donc ne fais pas confiance
Marsh Posté le 22-09-2006 à 17:51:11
Je suis en train de parcourir ce tutorial.
On y trouve tous les travers d'un cours universitaire classique. A oublier.
En plus clair, plus concis, mieux expliqué et surtout plus juste, tu as, en ligne :
La page d'E. Delahaye ( http://mapage.noos.fr/emdel ) qui comprend aussi des liens vers d'autres cours
De nombreux tutoriaux sur le site developpez.net ( http://c.developpez.com/cours )
Et en livre, le fameux K&R ("Le Langage C", de Kernighan&Ritchie)
Marsh Posté le 23-09-2006 à 05:37:42
Guyome666 a écrit : ... ils disent "C'est la méthode la plus efficace et rapide pour stocker et récupérer des données sur fichier"... |
Ils disent aussi "mais aussi la moins pratique". D'ailleurs, avec "open", t'es obligé de créer ton propre tampon alors que celui-ci est automatiquement géré avec "fopen". Bon, le mieux est que tu saches utiliser les 2 façons d'accéder à un fichier surtout que chaque mode a des avantages/inconvénients. Par exemple, moi j'aime beaucoup la gamme des possibles de "open()" avec les combinaisons O_CREAT et O_EXCL qu"on ne trouve pas avec "fopen()"...
Marsh Posté le 21-09-2006 à 17:43:01
Bonjour,
Je previens tout de suite, je débute dans le C alors la question peut paraitre stupide mais pour moi elle ne l´est pas.
Voila, dans mon programme j´ai obtenu une valeure que je stocke dans un objet "int" et je voudrais l´ecrire dans un fichier .doc via les fonctions "open" et "write". Jusque là tout ce passe bien sauf que lors que je lis le ficher (avec le bloc note), ce n´est pas la valeur de l´entier qui est affiché mais la représentation ASCII de cet entier. Je suppose qu´il doit exister une fonction de convertion, j´ai cherché du côté de sting.h mais j´ai pas trouver.
voila un resumé du code que j´ai ecrit
int a; -- On suppose que cet entier contient la valeur qui m´interresse
fd = open("cvaleur.doc", O_WRONLY |O_CREAT |O_TRUNC| O_TEXT,S_IWRITE );
write(fd, &a, 1) ;
Voilà, toute aide est la bienvenue
Merci d´avance