Bonjour à tous,

J'ai un problème avec VC++. J'ai un code source compiler sous Turbo C++ que je voudrais compiler sous VC++. Le code est bien compiler, l'exécutable est créer mais ce dernier ne fonctionne pas ! Voici le code source en question :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#include <stdio.h>
#include <stdlib.h>
#include <process.h>
#include <io.h>
#include <conio.h>
 
 
int lect(FILE *ptr_mat, char *var);
 
void main(void)
 {
  FILE *ptr_mat;
  int fd_mat, car, lig, col, pnt, nb_pnt, b_n;
  unsigned char var_mat[151], code[17][51], var[82];
  if ((fd_mat=open("MATRI15.T4",0x8304,0x0180)) == EOF) { printf("\nErreur d'ouverture de MATRICE.T4\n"); exit(1); }
 
  if ((ptr_mat=fopen("MAT_17.ECR","r")) == NULL) { printf("\nErreur d'ouverture de MATRICE.ECR\n"); exit(1); }
  car=0; 
 
  while (car != 256) //Parcourir les 256 caractères
   {
    pnt=0;
    //Initialisation de var[82]
    while (pnt != 81) { var[pnt]=0; pnt++; }
 
    //lecture de la ligne : ÃÄÄÄÄÄÄÄÄÄÄÄÄ´
    if (lect(ptr_mat,var_mat) == EOF) { printf("\nErreur de lecture de MATRICE.ECR\n"); exit(1); }
 
     //Initialisation de code[17][51]
     lig=0;
     while (lig != 16)
     {
      col=0; 
      while (col != 50) { code[lig][col]=0; col++; }
      lig++;
     }
     //Fin Initialisation
 
    nb_pnt=lig=0;
    //Parcourir les 16 lignes qui composent le caractère
    while (lig != 16) 
     {
      if (lect(ptr_mat,var_mat) == EOF) { printf("\nErreur de lecture de MATRICE.ECR\n"); exit(1); }
      b_n=pnt=0; 
      col=1;
 
      //Parcourir une ligne
      while (col != 13)
      {
        if ((var_mat[col] == 'X' && b_n == 1) || (var_mat[col] != 'X' && b_n == 0)) 
          code[lig][pnt]++;
        else
         {
          pnt++; 
          code[lig][pnt]++;
          //on inverse b_n
          b_n=(b_n == 0) ? 1 : 0;
         }
        col++;
       }
 
      pnt=col=0; while (col != 40)
       {
        var[nb_pnt]=code[lig][col];
        pnt+=var[nb_pnt]; 
 
        nb_pnt++; 
        col++;
        if (pnt == 12) break;
       }
      lig++;
     }
    write(fd_mat,var,80);
    car++;
   }
  fclose(ptr_mat);
 
  close(fd_mat); exit(0);
 }
 
int lect(FILE *ptr_mat, char *var_mat)
 {
  int car, compt=0;
  while (compt != 150)
   {
    if ((car=getc(ptr_mat)) == EOF) return(-1);
    if (car == 10 || car == 13) { var_mat[compt]=0; break; }
    var_mat[compt++]=car;
   }
  return(0);
 }
Ce code permet de remplir un fichier d'octet "MATRI15.T4" à partir d'un fichier de matrice. Avec l'EXE provenant de VC++, le fichier de sortie est vide. alors qu'avec l'EXE de TurboC++, il est bien rempli correctement ! Je pense que cela vient de la manipulation de sfichiers avec VC++ mais rien de sur :s !!

Merci d'avance pour votre aide