Autor Tema: Problema con la funcion fseek  (Leído 2768 veces)

Desconectado Arandacrack

  • Newbie
  • *
  • Mensajes: 1
Problema con la funcion fseek
« en: 29 de Mayo de 2005, 12:40:15 pm »
Hola, tengo que entregar una practica este jueves y tengo un pequeño problema con la citada función.

 for(i=cabecera.Ancho;i>0;i--){
                 printf("\n");
                     
        for(j=0;j<cabecera.Alto;j++){
      printf("i %d",i);
      fseek(fde,(cabecera.Ancho-i)*sizeof(char),SEEK_CUR);
             fread(&c, cabecera.Ancho*sizeof(char), 1, fde);                        
          fwrite(&c,sizeof(char), 1, fds);
                                 
                                  if (c<0) l=c+256;
                                  else l=c;
                                  printf("O %d \n",l);      
                   }  
                 
                 
                  system("pause");
           
             }

Esta es la parte del codigo que me da problemas. Se trata de un programa de tratamiento de imagenes, y debo de cambiar la posicion de fseek, q una vez ha leido cabecera.Alto valores(Alto de la imagen), no pasa a la siguiente columna y queda estancado en el ultimo valor. y yo creo que es por un error de fseek, pero no se cual.

Alguien que con estos poquitos datos que he proporcionado sepa algo?

Gracias

Desconectado pitukilloloco

  • Newbie
  • *
  • Mensajes: 3
Problema con la funcion fseek
« Respuesta #1 en: 29 de Mayo de 2005, 07:26:27 pm »
Me parece que estás empleando mal la función fseek. Suponiendo que abriste bien el archivo (espero que no lo hayas abierto para apendizarlo), vamos a ver que es lo que haces con los dos ciclos. En el primer ciclo varias a la variable i desde cabecera.Alto hasta 0. ¿Qué sucede cuando i tiene el valor de cabecera.Alto?, pues que en el segundo ciclo, el cual varias desde j = 0 hasta j = cabecera.Ancho, la función fseek toma estos valores
Código: [Seleccionar]

fseek(fde,(cabecera.Ancho-cabecera.Ancho)*sizeof(char),SEEK_CUR);

o sea, sustituyendo
Código: [Seleccionar]

fseek(fde,0,SEEK_CUR);

o sea que nunca mueves al apuntador del archivo, pero el que si lo mueve es la instrucción que pones enseguida de esta, que es
Código: [Seleccionar]

fread(&c, cabecera.Ancho*sizeof(char), 1, fde);

esta instrucción provoca que el apuntador se mueva tantos bytes como tenga cabecera.Ancho. Bueno, podríamos seguir analizando que haces en cada ciclo, pero espero que con esto poco te des cuenta donde hay que cambiar el código para corregirlo.

Desconectado pitukilloloco

  • Newbie
  • *
  • Mensajes: 3
Problema con la funcion fseek
« Respuesta #2 en: 29 de Mayo de 2005, 07:33:04 pm »
perdón, cometí un error al decir que i variaba de cabecera.Alto hasta 0 y j desde 0 hasta cabecera.Ancho siendo que es alrevés, sin embargo la argumentación se mantiene.

 

Aviso Legal | Política de Privacidad | Política de Cookies

el contenido de la web se rige bajo licencia
Creative Commons License