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

leer bloques de bytes y comprarlos

Estas en el tema de leer bloques de bytes y comprarlos en el foro de C/C++ en Foros del Web. hola! quería saber cómo leer bloques de bytes y poder compararlos para saber si son iguales (en C). voy leyendo con la función fgets(caracter,n+1,fichero); y ...
  #1 (permalink)  
Antiguo 27/10/2010, 02:06
boli-sp
Invitado
 
Mensajes: n/a
Puntos:
leer bloques de bytes y comprarlos

hola!

quería saber cómo leer bloques de bytes y poder compararlos para saber si son iguales (en C).

voy leyendo con la función fgets(caracter,n+1,fichero); y guardo el bloque de bytes de longitud n, en caracter.

después lo comparo usando la función strcmp().

mi duda es si está bien leer los bytes de esta forma para poder compararlos porque mi programa dependiendo de la longitud del bloque de bytes me lee bien el archivo o no. cuando lo lee mal deja todo en blanco.

gracias.
  #2 (permalink)  
Antiguo 27/10/2010, 06:08
 
Fecha de Ingreso: julio-2010
Mensajes: 46
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: leer bloques de bytes y comprarlos

Veamos si esto te sirve... Es para hacer una entrada/salida cruda (en este caso para leer) a un archivo binario:

Código C:
Ver original
  1. FILE* pFile = fopen(path, "rb");
  2.     if (pFile == NULL) {
  3.         printf("Error al intentar abrir el archivo. \n");
  4.         return NULL;
  5.     } else {
  6.  
  7.         int start = ftell(pFile);
  8.         fseek(pFile, 0, SEEK_END);
  9.         int end = ftell(pFile);
  10.         rewind(pFile);
  11.  
  12.         int size = end - start;
  13.  
  14.         unsigned char* data = (unsigned char*) malloc(size);
  15.         fread(data, 1, size, pFile);
  16.  
  17.         // Más código...
  18.  
  19.         fclose(pFile);
  20.     }
  21. }

Saludos!
  #3 (permalink)  
Antiguo 28/10/2010, 16:30
 
Fecha de Ingreso: octubre-2010
Ubicación: Edo. de México
Mensajes: 94
Antigüedad: 13 años, 6 meses
Puntos: 9
Respuesta: leer bloques de bytes y comprarlos

Podrias usar las siguientes llamadas al sistema

Código:
open("tu archivo", O_RDONLY);
Esta llamada al sistema te devuelve un file descriptor (un numero que identifica a tu archivo), este lo guardas en una variable. Ya que tienes este numero puedes leer tu archivo con read.

Código:
read(fd, buffer, n);
fd es el numero que obtienes mediante open, buffer es *void, puedes usar un *char si quieres, y n es el numero de bytes que quieres leer, en caso de que tu archivo no tenga n bytes, solo lee los mas posibles. Ademas de que read te devuelve el numero de bytes que leyo.

Espero esto te sea de ayuda

Saludos++

Etiquetas: bloques, byte
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 13:27.