J'ai un probl=E8me en essayant d'=E9crire des nombres dans un fichier
ouvert en mode binaire.
A chaque fois que le nombre 10 (0A en hex) est =E9crit, le nombre 13
soit 0D en hexa, est =E9crit =E0 la suite.
0A et 0D correspondent =E0 un carriage return et line feed. J'ai donc
autant d'octets en trop que de nombre 10 dans le fichier.
Je sais que ce probl=E8me ce produit lorsque le fichier de sortie n'est
pas ouvert en mode binaire. Ce n'est pas le cas de mon exemple
ci-dessous.
Je compile sous VC++.NET
Merci d'avance pour votre aide.
Ctest2App::Ctest2App()
{
// TODO : ajoutez ici du code de construction,
// Placez toutes les initialisations significatives dans InitInstance
long i;
long Size=3D10;
LONG len=3D1;
ofstream *BinFile; // The acq file streams
PUCHAR *buf =3Dnew PUCHAR[Size];
BinFile =3D new ofstream("out.bin");
for (i =3D0; i < Size; i++) {
buf[i] =3D new UCHAR[len];
buf[i][0]=3D10;
}
for (i =3D0; i < Size; i++) BinFile->write((char *) buf[i], len);=20
}
Je sais que ce problème ce produit lorsque le fichier de sortie n'est pas ouvert en mode binaire. Ce n'est pas le cas de mon exemple ci-dessous.
[...]
BinFile = new ofstream("out.bin");
Où vois-tu que ce fichier est ouvert en binaire ?
-- Loïc
drkm
"Romain" writes:
J'ai un problème en essayant d'écrire des nombres dans un fichier ouvert en mode binaire. A chaque fois que le nombre 10 (0A en hex) est écrit, le nombre 13 soit 0D en hexa, est écrit à la suite. 0A et 0D correspondent à un carriage return et line feed. J'ai donc autant d'octets en trop que de nombre 10 dans le fichier.
Je sais que ce problème ce produit lorsque le fichier de sortie n'est pas ouvert en mode binaire. Ce n'est pas le cas de mon exemple ci-dessous.
Si tu écris, en mode texte, un caractère 'n' (sous forme de constante de caractère ou sous forme numérique), l'implémentation peut en effet écrire effectivement autre chose, selon les conventions de la plate-forme.
--drkm
"Romain" <romain.bonne@voila.fr> writes:
J'ai un problème en essayant d'écrire des nombres dans un fichier
ouvert en mode binaire.
A chaque fois que le nombre 10 (0A en hex) est écrit, le nombre 13
soit 0D en hexa, est écrit à la suite.
0A et 0D correspondent à un carriage return et line feed. J'ai donc
autant d'octets en trop que de nombre 10 dans le fichier.
Je sais que ce problème ce produit lorsque le fichier de sortie n'est
pas ouvert en mode binaire. Ce n'est pas le cas de mon exemple
ci-dessous.
Si tu écris, en mode texte, un caractère 'n' (sous forme de
constante de caractère ou sous forme numérique), l'implémentation peut
en effet écrire effectivement autre chose, selon les conventions de la
plate-forme.
J'ai un problème en essayant d'écrire des nombres dans un fichier ouvert en mode binaire. A chaque fois que le nombre 10 (0A en hex) est écrit, le nombre 13 soit 0D en hexa, est écrit à la suite. 0A et 0D correspondent à un carriage return et line feed. J'ai donc autant d'octets en trop que de nombre 10 dans le fichier.
Je sais que ce problème ce produit lorsque le fichier de sortie n'est pas ouvert en mode binaire. Ce n'est pas le cas de mon exemple ci-dessous.
Si tu écris, en mode texte, un caractère 'n' (sous forme de constante de caractère ou sous forme numérique), l'implémentation peut en effet écrire effectivement autre chose, selon les conventions de la plate-forme.