problème pour ecriture de résultat dans un fichier text - C - Programmation
Marsh Posté le 21-03-2005 à 14:01:23
baleine2 a écrit : bonjour a tous, j'ai un petit problème pour écrire un résultat dans un fichier text, doit-je le convertir en chaine de caratere, ou puis-je le mettre en float? |
Ca veut dire quoi 'ca beug' ? Il se passe quoi au juste ?
Et si tu postais du code compilable ?
|
Marsh Posté le 21-03-2005 à 14:09:17
ca compile sans erreur, mais qd j'execute, ca me mets ce message:
"Thread stopped D:\Doccuments and settings\...\test.exe: Fault: floating point overflow at 0x401166"
???
Marsh Posté le 21-03-2005 à 14:19:44
baleine2 a écrit : ca compile sans erreur, |
Certainement pas. Il manque <stdio.h>
Citation : |
Que contient le fichier "ecriture test.txt" ? Et que représentent ces déplacements absolus avec fseek()? Cette fonction ne marche correctement qu'(avec les fichiers binaires ouverts en mode "b".
Au fait, le mode "r+t" n'existe pas. C'est "r+".
Si j'ai bien compris, tu veux lire une valeur dans le fichier, et l'écrire ailleurs dans le même fichier ? Cet ailleurs est-il bien dans le fichier ?
Ecrire et lire en même temps dans le même fichier est souvent la meilleure façon de détruire le fichier. Une façon sûre (et réversible) est d'utiliser 2 fichiers et les fonctions rename() et remove() astucieusement.
Explique exactement ce que tu veux faire.
J'ai ajouté du code de diagnostic. Chez moi, j'ai une erreur de lecture, c'est normal, dans le fichier de test, il y a n'importe quoi...
|
Marsh Posté le 21-03-2005 à 14:27:58
en fait, je veux, a partir d'un fichier excel, enregistré en format text, récupérer une valeur, la mettre ds une variable pr l'utiliser dans différents calculs, et les résultats de ces calculs, les mettre a des endroit précis du fichier text.
en gros, j'ai un tableau ou je rentre une valeur, et de cette valeur j'obtiens des résultats exploitables. je sais que l'on peut le faire directement sur excel, mais je voulais le faire en prog pr m'entrainer (car comme tu as pu le remarquer, je suis débutante!)
Marsh Posté le 21-03-2005 à 14:34:17
c'est pas le bon plan d'utiliser fprintf, fscanf...
utilise fread, fwrite, fseek... ça marche bcp mieux et tu peux mettre ce que tu veux dedans...
Marsh Posté le 21-03-2005 à 14:40:01
baleine2 a écrit : en fait, je veux, a partir d'un fichier excel, enregistré en format text, |
Peux tu donner un exemple de ce fichier texte ? (Dans des balises 'fixe')
Marsh Posté le 21-03-2005 à 14:41:07
moi23372 a écrit : c'est pas le bon plan d'utiliser fprintf, fscanf... |
C'est pas 'mieux' ou 'moins bien'. Ca dépend de la structure du fichier. (Texte, binaire...)
Marsh Posté le 21-03-2005 à 14:50:57
voici mon fichier text:
|
Marsh Posté le 21-03-2005 à 15:22:52
baleine2 a écrit : voici mon fichier text:
|
Ce que tu veux faire me parait difficile avec un fichier texte, tout simplement parce qu'un fichier texte a rarement un format fixe, ne serait-ce que parceque selon les machines, une fin de ligne occupe un ou deux caractères, sans parler du nombre d'espaces qui peux changer etc.
Ce que tu veux faire, (remplacer une séquence de bytes par une autre) peux se faire facilement dans un fichier binaire dont le format est parfaitement défini en bytes, mais plutôt aléatoire sur un fichier texte. Avec ce fichier texte, ton code donne
|
En admettant que "0,125" ai été trouvé au bon endroit, la conversion s'arrête à la ',' (virgule) car fscanf() "%f" attend un '.' (point). a vaut donc 0 et la division par a (qui vaut 0) invoque un comportement indéfini...
Tu vois que ce n'est pas évident...
Tu aurais de meilleures chances avec un format 'CSV' (Séparé par des virgules)
Essaye d'exporter ton fichier Excel en CSV...
Marsh Posté le 21-03-2005 à 16:37:26
oulala... t'aurais de la doc sur ce format, et comment faut implémenter ca... je pensais pas que ce que je voulais faire était si compliqué! ;-)
Marsh Posté le 21-03-2005 à 16:50:22
baleine2 a écrit : oulala... t'aurais de la doc sur ce format, et comment faut implémenter ca... je pensais pas que ce que je voulais faire était si compliqué! ;-) |
Une bonne ressource pour les formats de fichiers:
http://www.wotsit.org/
Marsh Posté le 22-03-2005 à 11:55:27
merci, mais je n'arrive pas a trouver ce dt j'ai besoin sur ce site, comment doit-je implémenter un fichier CSV? comment le traiter?
Marsh Posté le 22-03-2005 à 13:12:54
baleine2 a écrit : merci, mais je n'arrive pas a trouver ce dt j'ai besoin sur ce site, comment doit-je implémenter un fichier CSV? comment le traiter? |
Je pense qu'Excel sait exporter au format CSV. La description doit être détaillée dans le manuel de Excel.
En gros :
"donnee cellule A1",,"donnee cellule A3"
"donnee cellule B1","donnee cellule B2"
un truc comme ça...
Marsh Posté le 23-03-2005 à 09:23:57
ok, mais mes données, ce sont quoi des caractere ou des nombres? car moi j'aurais des 2; et sur les nombre je dois faire des calculs puis inscrire les resultats dans le fichier. je nage vraiment, la. je comprend pas grand chose...
Marsh Posté le 23-03-2005 à 09:36:33
baleine2 a écrit : ok, mais mes données, ce sont quoi des caractere ou des nombres? car moi j'aurais des 2; et sur les nombre je dois faire des calculs puis inscrire les resultats dans le fichier. je nage vraiment, la. je comprend pas grand chose... |
Comme je l'ai déjà dit, le détail du format est dans la doc d'Excel. (Je ne connais pas Excel).
Marsh Posté le 23-03-2005 à 09:50:35
ok, merci qd meme...excel est bcp plus compliqué que je croyé...
Marsh Posté le 23-03-2005 à 11:39:06
lol ?
je ne vois pas la difficulté de cliquer sur exporter -> format cvs...
Marsh Posté le 23-03-2005 à 12:19:14
ben excuse moi, mais dans l'aide d'excel, je n'ai pas trouvé le format CSV, j'ai le format XML, png, VML...
apparement, XML serait une amelioration de CSV mais il faut le coder en UTF-8???
Marsh Posté le 23-03-2005 à 13:06:01
baleine2 a écrit : ben excuse moi, mais dans l'aide d'excel, je n'ai pas trouvé le format CSV, j'ai le format XML, png, VML... |
http://www.google.fr
Résultats 1 - 10 sur un total d'environ 432 000 pour excel CSV format. (0,20 secondes)
Marsh Posté le 23-03-2005 à 14:06:48
vindiou oé c'est pas gagné
exporte au format CSV et tu comprendra ce que tu devra faire.
Et si tu comprends toujours pas ce que tu dois faire aprés, ba reprends les bases (ou essaye windev ?) !
Marsh Posté le 24-03-2005 à 19:27:47
baleine2 a écrit : charabia....je suis définitivement nul... |
L'ignorance n'est jamais de la nullité. C'est de baisser les bras qui serait vraiment nul.
Je vais essayer de faire un petit résumé
Le format "CSV" est un procédé qui te permet d'enregistrer un document Office dans un format
1) qui conserve les valeurs
2) où t'as pas besoin d'office pour relire ton fichier
En fait, c'est un format "texte" où chaque valeur est séparée de sa voisine par un point-virgule.
Si tu veux essayer, ouvre un document Excel vierge, tape quelques trucs dedans puis enregistre-le au format CSV, puis renomme le .CSV en .txt et ouvre ton fichier avec BlocNote et tu verras mieux le format.
Ce format très simple te permet, en comptant les points-virgule, de retrouver la valeur qui t'intéresse. Tu inclues ce compteur dans un programme C et tu peux exploiter ton CSV comme tu veux.
Un format XML peut-être sommairement résumé comme une amélioration du CSV mais c'est très simpliste. Un XML c'est un format qui englobe
1) la description des données que tu traites
2) la donnée elle-même
Ainsi, si tu passes un document XML à quelqu'un d'autre, ce quelqu'un peut exploiter le document puisqu'il reçoit à la fois la caractéristique de la donnée et sa valeur.
Exemple de XML
<FAMILLE>
<PERSONNE type="pere">
<PRENOM>Alfred</PRENOM>
<AGE>33</AGE>
</PERSONNE>
<PERSONNE type="mere">
<PRENOM>Augusta</PRENOM>
<AGE>28</AGE>
</PERSONNE>
</FAMILLE>
Evidemment, ce genre de document est plus difficile à exploiter que le CSV mais il est aussi plus riche. Pour ton pb, tu peux rester au CSV ce sera plus facile...
Marsh Posté le 25-03-2005 à 05:29:04
Sve@r a écrit : En fait, c'est un format "texte" où chaque valeur est séparée de sa voisine par un point-virgule. |
Si c'est séparé par un point-virgule peut-on encore appeler ça du CSV
Marsh Posté le 25-03-2005 à 07:51:39
matafan a écrit : Si c'est séparé par un point-virgule peut-on encore appeler ça du CSV |
SCSV!
C'est le CSV à la mode Microsoft...
Marsh Posté le 25-03-2005 à 11:30:37
ok, les caractéristiques du fichier CSV sont à peu près comprises...par contre, mon plus gros point faible c'est que je n'arrive pas à faire les connections avec borland.
Comment je fais pour accéder à la donnée de la ligne 3, colonne 2, par exemple? je récupère sous format text que je dois convertir en float pour faire des calculs? puis en suite, pour transporter une valeur dans mon fichier CSV, je dois aussi la transformer en caractères?
Marsh Posté le 25-03-2005 à 11:42:56
baleine2 a écrit : ok, les caractéristiques du fichier CSV sont à peu près comprises...par contre, mon plus gros point faible c'est que je n'arrive pas à faire les connections avec borland. |
Ben oui...
Rien que du traitement de données de base... à faire avec méthode et rigueur comme d'habitude...
Marsh Posté le 25-03-2005 à 13:01:45
Emmanuel Delahaye a écrit : Ben oui... |
Bienvenue dans le monde merveilleux du C...
Marsh Posté le 21-03-2005 à 13:35:46
bonjour a tous, j'ai un petit problème pour écrire un résultat dans un fichier text, doit-je le convertir en chiane de caratere, ou puis-je le mettre en float?
j'ai ecrit ce code, mais ca beug a la ligne du fprintf, si qq1 aurais une solution pr moi, ce serai super cool
merci d'avance, bonne journée