elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Recorrer un archivo recursivamente.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Recorrer un archivo recursivamente.  (Leído 1,943 veces)
MatiDiyo

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Recorrer un archivo recursivamente.
« en: 5 Septiembre 2018, 16:33 pm »

Hola gente que tal?

Estoy atorado en un ejercicio de recursividad, en el cual tengo que buscar el menor elemento de un archivo de enteros. No le puedo encontrar la forma de recorrer el archivo recursivamente.

Código:
#include <windows.h>
#include <stdio.h>
#include <conio.h>

int main()
{
    FILE *fp;
    int *datos;

    printf("%i ", BuscarMenorArchivo_Recursiva(&fp, &datos));


}

int BuscarMenorArchivo_Recursiva(FILE *fp, int *datos)
{
    fp = fopen("datos.dat", "rb");

    fread(datos, sizeof(int), 1, archi);

    int menor = (*datos);

    if(feof(fp) != NULL)
    {
        menor = BuscarMenorArchivo_Recursiva(archi, datos);

        fread(datos, sizeof(int), 1, fp);

        if( (*datos) < menor)
            menor = (*datos);
    }

    fclose(fp);
    return menor;
}

Saludos gente  ;D


« Última modificación: 5 Septiembre 2018, 16:37 pm por MatiDiyo » En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Recorrer un archivo recursivamente.
« Respuesta #1 en: 6 Septiembre 2018, 14:59 pm »

Para hacer algo bonito debes hacer uso de dos funciones: Una que usarás de interfaz y la otra quien realmente trabajará con la recursión.

Cuidado que el archivo puede estar vacío y deberías comprobar eso antes de usar estas funciones. Otra idea sería modificar la función inicial para que devuelva si ha habido error accediendo al archivo o éste se encuentra vacío y devuelva por referencia el valor conseguido.

Código
  1. static int f_interno(FILE *fp, int menor) {
  2.    if(!feof(fp)) {
  3.        int actual;
  4.        int siguiente;
  5.        fread(&actual, sizeof(int), 1, fp);
  6.        siguiente = f_interno(fp, menor);
  7.        menor = actual<siguiente? actual : siguiente;
  8.    }
  9.    return menor;
  10. }
  11.  
  12. int f(FILE *fp) {
  13.    int menor;
  14.    fread(&menor, sizeof(int), 1, fp);
  15.    menor = f_interno(fp, menor);
  16.  
  17.    return menor;
  18. }


En línea

MatiDiyo

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Recorrer un archivo recursivamente.
« Respuesta #2 en: 7 Septiembre 2018, 02:30 am »

Hola MAFUS, gracias por la ayuda el código funciona de maravilla. Aunque tengo una duda del porque hiciste la función con el "static".

Muchas gracias y saludos  ;D
En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Recorrer un archivo recursivamente.
« Respuesta #3 en: 7 Septiembre 2018, 10:43 am »

Sirve para que un objeto global no sea visto desde fuera del archivo, así si hicieras una librería esa sería la forma de ocultar esas función que no quieres que la gente use. Cómo un método private en POO.
En línea

MatiDiyo

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Recorrer un archivo recursivamente.
« Respuesta #4 en: 8 Septiembre 2018, 05:27 am »

Gracias por el dato, no lo sabía.

Saludos
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
listar carpetas y subcarpetas recursivamente con vbscript
Scripting
nqnnelson 1 10,645 Último mensaje 22 Enero 2010, 14:20 pm
por Novlucker
Trabajar Recursivamente
Programación C/C++
Black Lotus 2 2,113 Último mensaje 7 Marzo 2013, 17:50 pm
por Black Lotus
recorrer archivo binario
Programación C/C++
m@o_614 3 3,075 Último mensaje 25 Octubre 2013, 17:59 pm
por rir3760
No se cambian los permisos a una carpeta recursivamente en Debian 7 « 1 2 3 »
GNU/Linux
ccrunch 24 10,629 Último mensaje 23 Enero 2014, 01:38 am
por _Slash_
como recorrer un archivo de palabras vetadas y descartarlas para una comparacion
Java
or.gutierrez 6 3,220 Último mensaje 4 Noviembre 2014, 20:52 pm
por or.gutierrez
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines