Ecrire la valeur ascii dans un fichier

Ecrire la valeur ascii dans un fichier - C - Programmation

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("c:/valeur.doc", O_WRONLY |O_CREAT |O_TRUNC| O_TEXT,S_IWRITE );
        write(fd, &a, 1)   ;
 
Voilà, toute aide est la bienvenue
Merci d´avance

Reply

Marsh Posté le 21-09-2006 à 17:43:01   

Reply

Marsh Posté le 21-09-2006 à 17:44:25    

printf("%d", 'a');

Reply

Marsh Posté le 21-09-2006 à 17:48:36    

Guyome666 a écrit :

Code :
  1. fd = open("c:/valeur.doc", O_WRONLY |O_CREAT |O_TRUNC| O_TEXT,S_IWRITE );
  2.         write(fd, &a, 1)   ;




Pourquoi utilises-tu des fonctions systèmes ? Il y a des fonctions standards pour ça.
 
fopen()
fprintf()...
 
déclarées dans <stdio.h>


Message édité par Emmanuel Delahaye le 21-09-2006 à 17:49:42

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 21-09-2006 à 19:39:45    

Guyome666 a écrit :

Code :
  1. write(fd, &a, 1)



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


char tampon[1024];
int a=112;
int fd;
fd=open(..., ...);
sprintf(tampon, "%d", a);
write(fd, tampon, strlen(tampon));
close(fd);


 
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()".


int a=112;
FILE *fp;
fp=fopen(..., "w" );
fprintf(fp, "%d", a);
fclose(fp);


Message édité par Sve@r le 21-09-2006 à 19:40:50

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

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

Reply

Marsh Posté le 22-09-2006 à 17:47:42    

Guyome666 a écrit :

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


 
Si le gars justifie rien, ca n'engage que lui, et donc ne fais pas confiance


---------------
Töp of the plöp
Reply

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)


Message édité par Elmoricq le 22-09-2006 à 17:53:38
Reply

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()"...


Message édité par Sve@r le 23-09-2006 à 05:43:14

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed