Bonjour
J'ai un petit code source qui il un fichier ASCCI,converti chaque caractère en EBCDIC puis ecrit le résultat (ligne par ligne ) dans un fichier de sortie.
Toute fonctionne sauf que j'écris toujours sur la même ligne en sortie ...
Mon ASCCI fichier en entrée (je suis sur système IBM donc c'est normal)
Mon fichier EBCDIC en sortie
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 ø/ÈÊÑÄÁ Ã* ø/ÈÊÑÄÁ Ã*
Le transcodage est bon mais tout est sur une ligne ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 patrice .0123456789 patrice .0123456789
Voici mon source (zcost.h contient la fonction atoe)
J'ai essayé d'ajouter \0 c'est pareil.
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 /*---------------------------------------------------------------*/ /* objet : conversion d'un fichier ASCII -> EBCDIC */ /*---------------------------------------------------------------*/ #include <stdio.h> #include <string.h> #include "zcost.h" #define LRECL 80 FILE *fp; FILE *fpwrite; void read_fic(){ char line[LRECL]; char wline[LRECL]; char Cchaine; int compteur=0; int Ctrl=0; if (fgets(line,sizeof line,fp)==NULL) { printf("I/O error when reading file\n");} while (fgets(line,LRECL,fp)!=NULL) { /* puts(line); */ for (compteur=0;compteur<strlen(line);compteur++) { if (strlen(line)>2) wline[compteur]=atoe(&line[compteur]); /*transcodage*/ Ctrl=1; /*enreg valide*/ }/*fin du for*/ if (Ctrl) { /* wline[compteur+1]='\0'; fin de l'enreg */ fputs(wline,fpwrite); /*ecriture de l'enreg complet*/ Ctrl=0; }/*fin du if*/ }/*fin while*/ } /*fin read_fic*/ /*---------------------------------------------------------------*/ int main() { if ((fp = fopen("'ADCDB.MIB.HEXA'","r")) == NULL) fprintf(stderr,"Unable to open source file \n"); else { if ((fpwrite = fopen("'ADCDB.MIB.HEXA.NEW'","w")) == NULL) fprintf(stderr,"Unable to open dest file \n"); else { read_fic(); fclose(fp); fclose(fpwrite); } } return 0; } /* fin du main */
Pouvez vous m'expliquez ou est mon erreur ?
Partager