Bonjour à vous :
J'ai developpé il y a quelques années un bout de code en "C" qui à la lecture des lignes d'un fichier retranscrit chaque ligne sur la base de la stucture "B" ci-dessous.
avec la position de chaque champs dans la ligne. (Le but de ce petit programme etant de verifier la position et les valeurs de chaque elements d'une interface)
Je demarre maintenant au C#
et je souhaite faire la meme chose .
Mon problème se situe au niveau du chargement des données dans la structure .
En "C" : La ligne de commande suivante remplie toute la structure "B"
fgets((char *)&B,BUFSIZE,fich);
Mais en C# : les structures étant maintenant des "class" comportants différents objets , je ne sait pas s'il est possible d'affecter une chaine de caractère (une ligne du fichier) directement dans une structure (Au sens C)
La structure en langage C
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| /* Description de la ligne
struct
{
char clef1[1]; /* 1ere Clef */
char clef2[8]; /* 2ème Clef */
char info1[10]; /* Information 1 */
char info2[12]; /* Information 2 */
char info3[8]; /* Information 3 */
struct
{ /* Tableau de 10 Positions */
char dpos[2];
} SCH[10];
char Z_comun[150]; /* Zone Commune */
} B ; |
Exemple valant mieux que de grand discours : 
Le fichier (2 lignes)
1 2
| 11234567812345678901234567890121234567801 B02 C03 D04 E05 FZOne Commune
AClef2 Info 1 Informatio 2Info 3 1 2 3 4 5 6 7 8 910Ceci est commun |
Le resultat
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 30 31 32 33 34 35
| Pos=[ 1]B.clef1=(1)
Pos=[ 2]B.clef2=(12345678)
Pos=[ 10]B.info1=(1234567890)
Pos=[ 20]B.info2=(123456789012)
Pos=[ 32]B.info3=(12345678)
Pos=[ 40]B.SCH[i].dpos=(01)
Pos=[ 42]B.SCH[i].dpos=( B)
Pos=[ 44]B.SCH[i].dpos=(02)
Pos=[ 46]B.SCH[i].dpos=( C)
Pos=[ 48]B.SCH[i].dpos=(03)
Pos=[ 50]B.SCH[i].dpos=( D)
Pos=[ 52]B.SCH[i].dpos=(04)
Pos=[ 54]B.SCH[i].dpos=( E)
Pos=[ 56]B.SCH[i].dpos=(05)
Pos=[ 58]B.SCH[i].dpos=( F)
Pos=[ 60]B.Z_Commun=(ZOne Commune )
==================================
Pos=[ 1]B.clef1=(A)
Pos=[ 2]B.clef2=(Clef2 )
Pos=[ 10]B.info1=(Info 1 )
Pos=[ 20]B.info2=(Informatio 2)
Pos=[ 32]B.info3=(Info 3 )
Pos=[ 40]B.SCH[i].dpos=( 1)
Pos=[ 42]B.SCH[i].dpos=( 2)
Pos=[ 44]B.SCH[i].dpos=( 3)
Pos=[ 46]B.SCH[i].dpos=( 4)
Pos=[ 48]B.SCH[i].dpos=( 5)
Pos=[ 50]B.SCH[i].dpos=( 6)
Pos=[ 52]B.SCH[i].dpos=( 7)
Pos=[ 54]B.SCH[i].dpos=( 8)
Pos=[ 56]B.SCH[i].dpos=( 9)
Pos=[ 58]B.SCH[i].dpos=(10)
Pos=[ 60]B.Z_Commun=(Ceci est commun )
================================== |
La question est :
est il possible en C# de découper une chaine de caractères en la copiant comm en "C" dans une structure . (Ou y a t'il d'autre methode le permettant)
(La notion de contiguité des éléments d'une structure n'existe pas en C# ... il me semble....)
Merci de votre aide
@argoet
Partager