Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Leer archivo - caracter 26

Estas en el tema de Leer archivo - caracter 26 en el foro de C/C++ en Foros del Web. Hola a todos, Les escribo porque tengo un problema y no sé cómo tomarlo. Resulta que tengo números codificados en código ASCII en un archivo ...
  #1 (permalink)  
Antiguo 17/09/2011, 17:17
 
Fecha de Ingreso: julio-2006
Mensajes: 50
Antigüedad: 17 años, 9 meses
Puntos: 0
Leer archivo - caracter 26

Hola a todos,

Les escribo porque tengo un problema y no sé cómo tomarlo. Resulta que tengo números codificados en código ASCII en un archivo de texto.

Tengo un programa en C que va leyendo el archivo caracter a caracter y así construye los números. Sin embargo, cuando aparece el caracter 26, el programa deja de leer y entrega siempre el mismo número. Me parece que ese caracter es algo como un fin de cadena o algo así, o no?
Para intentar esquivarlo, le digo al programa que si aparece el caracter 26, entregue un 26, pero no funciona, pues de todas formas lee el caracter.

Este es el código (resumido)
Código PHP:
for(i=0;i<400;i++) {
     
fread mystring1,1pFile );
     
numero=(unsigned int)(mystring[0]);
     ...

De qué manera puedo abordar el problema?

Muchísimas gracias por su tiempo

Saludos
  #2 (permalink)  
Antiguo 21/09/2011, 07:11
 
Fecha de Ingreso: junio-2010
Ubicación: Madrid
Mensajes: 620
Antigüedad: 13 años, 10 meses
Puntos: 73
Respuesta: Leer archivo - caracter 26

El carácter ASCII 26 (también representado como Ctrl-Z) es la marca de fin de archivo para archivos de texto (no binarios). Cuando lees un archivo de texto (abierto como archivo de texto), la lectura finaliza al llegar a ese carácter ASCII 26. Si intentas continuar leyendo el archivo, la respuesta que obtienes suele ser la repetición de la última lectura (al menos, este es el comportamiento que he observado en todos los compiladores que he utilizado, tanto en DOS/Windows como en Unix/Linux).

Aunque, por lo que veo, estás utilizando fread para leer carácter a carácter, el problema que citas puede proceder del hecho de que hayas abierto el archivo en modo texto. Si haces, por ejemplo,

pFile = fopen (NombreArchivo, "r")

estás abriendo el archivo en modo texto (que es el modo por defecto), con lo que, aunque leas con fread (que, en principio, es para archivos binarios), deja de leer al llegar al carácter de fin de archivo.

Para trabajar en modo binario, tendrias que abrir el archivo en modo binario:

pFile = fopen(NombreArchivo, "rb")

con lo que dejas de tener el problema de la marca de final de archivo (sería un byte como cualquier otro).
  #3 (permalink)  
Antiguo 25/09/2011, 17:21
 
Fecha de Ingreso: julio-2006
Mensajes: 50
Antigüedad: 17 años, 9 meses
Puntos: 0
Respuesta: Leer archivo - caracter 26

Muchas gracias!
En efecto, estaba haciendo lo que dices, y con leerlo en binario ya no arroja problemas.
Justamente, me estaba entregando el último valor que había leído.

Etiquetas: caracteres, char26, textos
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 14:04.