Struct et .dat

Résolu
ricklekebekoi Messages postés 303 Date d'inscription mardi 11 février 2003 Statut Membre Dernière intervention 24 avril 2009 - 20 déc. 2004 à 22:13
cbeyls Messages postés 31 Date d'inscription samedi 22 janvier 2005 Statut Membre Dernière intervention 13 mars 2005 - 17 févr. 2005 à 08:54
Hello,

En c, je peut faire ceci:
#include <stdio.h>
#include 
File *ptrf;
struct personne{
char Nom[21],
int Age,
long Tel
}enreg;

main()
{
ptrf = fopen( "c:\\data.dat" , "w" );
cin>>enreg.Nom;
cin>>enreg.Age;
cin>>enreg.Tel;
fwrite( &enreg, sizeof(enreg), 1, ptrf );
fclose( ptrf );
}


En gros je veut l'équivalent en c#.

Yaura toujours les writeline, mais sa fera pas un fichier .dat de la même manière. Moi je voudrais un .dat pas plus lisible que ce que produit le code au dessus.

Merci :)

Eric ;)

10 réponses

APWEB Messages postés 74 Date d'inscription lundi 30 juin 2003 Statut Membre Dernière intervention 18 octobre 2006 2
20 déc. 2004 à 22:39
Si tu cree une classe avec la def. de personne (class personne ) avec tes definitions de personne et qu'ensuite tu utilise la serialisation pour ecrire ton fichier ???

AP
3
TheSaib Messages postés 2368 Date d'inscription mardi 17 avril 2001 Statut Modérateur Dernière intervention 26 décembre 2007 22
21 déc. 2004 à 13:46
3
cbeyls Messages postés 31 Date d'inscription samedi 22 janvier 2005 Statut Membre Dernière intervention 13 mars 2005 1
17 févr. 2005 à 08:33
Voilà un exemple simple qui reprend le tien:






using System;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;

namespace SerializationExample
{
/// <summary>
/// Exemple de sérialisation d'une struct en C#.
/// </summary>
class Class1
{
[Serializable]
struct Personne
{
public string Nom;
public int Age;
public long Tel;
}

/// <summary>
/// Point d'entrée principal de l'application.
/// </summary>
[STAThread]
static void Main(string[] args)
{
string fichier = @"C:\data.dat";

Personne p;
p.Nom = "Toto";
p.Age = 18;
p.Tel = 478101010;

FileStream fs = new FileStream(fichier, FileMode.Create);
BinaryFormatter formatter = new BinaryFormatter();
try
{
formatter.Serialize(fs, p);
}
catch (SerializationException e)
{
Console.WriteLine("Impossible de sérialiser la structure dans le fichier {0}, raison: {1}", fichier, e.Message);
}
finally
{
fs.Close();
}
}
}
}
3
cbeyls Messages postés 31 Date d'inscription samedi 22 janvier 2005 Statut Membre Dernière intervention 13 mars 2005 1
17 févr. 2005 à 08:54
Utiliser la sérialisation est donc la manière "élégante" de faire ceci.
Cependant, la sérialisation produit des fichiers contenant de
nombreuses méta-données additionnelles (version du Runtime, nom de la
classe, etc.), forcément plus gros que les données elles-même. Si tu
veux obtenir un fichier qui ne contient que les données brutes comme en
C et qui soit compatible avec la version C de ton programme, il y a
moyen de bricoler en utilisant le Marshaling afin qu'il transforme tes
struct en tableaux de bytes et vice-versa. Mais c'est moins propre à
coder.



Ce site explique la marche à suivre:

http://csharp.codenewbie.com/articles/csharp/1431/C_and_advanced_binary_files-Page_1.html
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ricklekebekoi Messages postés 303 Date d'inscription mardi 11 février 2003 Statut Membre Dernière intervention 24 avril 2009 5
20 déc. 2004 à 23:17
Rien de plus simple ? :P

Eric ;)
0
ricklekebekoi Messages postés 303 Date d'inscription mardi 11 février 2003 Statut Membre Dernière intervention 24 avril 2009 5
20 déc. 2004 à 23:19
Plus simple je parle pour la sérialisation. La classe, je suis d'accord, j'aime mieux qu'un struct.

Eric ;)
0
APWEB Messages postés 74 Date d'inscription lundi 30 juin 2003 Statut Membre Dernière intervention 18 octobre 2006 2
20 déc. 2004 à 23:55
A part ça ou un StreamWriter ou StringWriter ??

AP
0
ricklekebekoi Messages postés 303 Date d'inscription mardi 11 février 2003 Statut Membre Dernière intervention 24 avril 2009 5
21 déc. 2004 à 04:51
Bon d'Accord, va pour la sérialisation. Pas de xml, je veut quelquechose comem dit sur un autre topic de plsu illisible

Binaire j'ai cru comprendre.

Or jy comprend que dalle selon les sources, me faudrait un exemple concret, ou un lien vers un site qui en parle :P
0
ricklekebekoi Messages postés 303 Date d'inscription mardi 11 février 2003 Statut Membre Dernière intervention 24 avril 2009 5
22 déc. 2004 à 03:08
Bon, un coup que j'ai fini par comprendre le fonctionnement ( processus qui fut extrêmement lent ) j'ai finalement réussi en utilisant la sérialisation grace au merveilleux tuto linké plus haut.

Merci a tous
0
cbeyls Messages postés 31 Date d'inscription samedi 22 janvier 2005 Statut Membre Dernière intervention 13 mars 2005 1
17 févr. 2005 à 08:07
Tu peux aussi sérialiser une struct, tu n'as pas spécialement besoin de
faire une classe. Tout dépend si tu préfères manipuler des types
valeurs ou des références à des objets.
0
Rejoignez-nous