f.write y char(10)...

10/10/2003 - 16:58 por Jaime | Informe spam
En Windows, al escribir en un fichero "" se guardan
dos caracteres con los Ascii 13 y 10.
Ascii 13 = Carriage Return.
Ascii 10 = New line.

El problema es que si quiero escribir un char con el
valor 10, se escribe 13 y 10, en lugar de solamente el 10.

¿Hay alguna forma de que solo escriba el 10?

Por ejemplo:
{
ofstream f;
char c[10] = {1, 1, 1, 1, 1, 10, 1, 1, 1, 1};

f.open("prueba.dat");
f.write(c, 10);
f.close();
}

En este caso se escriben 11 chars en el fichero,
el 10 se escribe 13 y 10, con lo que al hacer un
f.read(c, 10) se destroza todo.

Si alguien conoce como hacer que solo se escriba el 10
le agraceria que respondiera ...

GRACIAS.
 

Leer las respuestas

#1 Marco A. Perez
11/10/2003 - 02:16 | Informe spam
Hola Jaime,

Abre tu archivo en modo binario, el default es modo texto
donde cada LF se sustituye por un CRLF:

f.open("prueba.dat", ios::out | ios::binary);

Saludos,
Marco.


En Windows, al escribir en un fichero "" se guardan
dos caracteres con los Ascii 13 y 10.
Ascii 13 = Carriage Return.
Ascii 10 = New line.

El problema es que si quiero escribir un char con el
valor 10, se escribe 13 y 10, en lugar de solamente el 10.

¿Hay alguna forma de que solo escriba el 10?

Por ejemplo:
{
ofstream f;
char c[10] = {1, 1, 1, 1, 1, 10, 1, 1, 1, 1};

f.open("prueba.dat");
f.write(c, 10);
f.close();
}

En este caso se escriben 11 chars en el fichero,
el 10 se escribe 13 y 10, con lo que al hacer un
f.read(c, 10) se destroza todo.

Si alguien conoce como hacer que solo se escriba el 10
le agraceria que respondiera ...

GRACIAS.


.

Preguntas similares