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);
} |
Partager