Foros del Web » Programación para mayores de 30 ;) » Programación General »

Leer archivo con Visual C++

Estas en el tema de Leer archivo con Visual C++ en el foro de Programación General en Foros del Web. Hola, soy nuevo por aqui, asi que muchos saludos. A ver si me podeis resolver este problemilla. Tengo el siguiente fragmento de codigo en Visual ...
  #1 (permalink)  
Antiguo 06/01/2005, 19:27
Avatar de Nietzsche  
Fecha de Ingreso: enero-2005
Ubicación: MALAGA-ESPAÑA
Mensajes: 228
Antigüedad: 19 años, 3 meses
Puntos: 0
Leer archivo con Visual C++

Hola, soy nuevo por aqui, asi que muchos saludos.
A ver si me podeis resolver este problemilla.

Tengo el siguiente fragmento de codigo en Visual C++:

CFile entrada;
CFileException ex;
char recurso[3];

if (!entrada.Open("a.txt", CFile::modeRead, &ex))
{
// Error de apertura del fichero
TCHAR aperturaError[1024];
ex.GetErrorMessage(aperturaError, 1024);
pDC->TextOut(0,0, aperturaError );
}
else{ // Apertura correcta
pDC->TextOut(0,0, "Archivo abierto" );
int longitud=entrada.SeekToEnd();
for(int i=0; i<longitud;i=i+3)
{
entrada.Seek(i, CFile::begin);
entrada.Read(recurso, 3);
str=recurso;
pDC->TextOut(0,0+25*i,str);
}
entrada.Close();
}

Lo que se supone que deberia hacer es abrir el archivo a.txt (que lo hace), y luego ir leyendo caracteres de 3 en 3 hasta el final del archivo. Por cierto el archivo a.txt contiene esto:

CPU 75
CH1 30
CH2 42.5
CH3 37.25
INA 10

Pues bien, al imprimir el contenido de la variable str con la instruccion: pDC->TextOut(0,0+25*i,str); en cada iteracion, lo que obtengo es lo que en un principio debería pero acompañado de unos caracteres extraños que no se xq salen, es decir se me imprime esto:

CPUÌÜ¿J_l

75ÌÜ¿J_l

etc...

A ver si me echais un cable.
Muchas gracias de antemano.
  #2 (permalink)  
Antiguo 06/01/2005, 23:45
 
Fecha de Ingreso: noviembre-2003
Ubicación: Mexico
Mensajes: 1.081
Antigüedad: 20 años, 5 meses
Puntos: 7
no estoy seguro, pero me imagino es que el metodo ese de la clase CFILE lo hace es que va leyendo bytes,
entonces lo que te muestra el valor byte de los espacios y demas
  #3 (permalink)  
Antiguo 07/01/2005, 03:05
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 19 años, 11 meses
Puntos: 74
El problema es que recurso tiene unicamente 3 bytes, al ser una cadena de caracteres lo que intentas imprimir en pantalla el programa no deja de imprimir hasta encontrarse con el caracter de fin de cadena que es un byte puesto a 0.

Probá así:
char recurso[4];
recurso[3] = 0;

PD. Por cierto el espacio tiene un valor de 32 en ASCII pero la representación gráfica que se generaría sería un espacio no su número.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO

Última edición por Eternal Idol; 07/01/2005 a las 03:09
  #4 (permalink)  
Antiguo 07/01/2005, 08:50
Avatar de Nietzsche  
Fecha de Ingreso: enero-2005
Ubicación: MALAGA-ESPAÑA
Mensajes: 228
Antigüedad: 19 años, 3 meses
Puntos: 0
Pues si, el problema era ese, muchas gracias.
Suponia que iria por ahi, pero no sabia como tenia que acabar la cadena.
  #5 (permalink)  
Antiguo 07/01/2005, 08:51
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 19 años, 11 meses
Puntos: 74
De nadas Friedrich.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:38.