• Viernes 8 de Noviembre de 2024, 12:34

Autor Tema:  Búsqueda De Archivos En C++  (Leído 2648 veces)

rreennee

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Búsqueda De Archivos En C++
« en: Martes 22 de Abril de 2008, 22:57 »
0
Hola

Soy principiante en la
programacion con lenguaje C++.
Necesito que alguien me explique
como se usan las funciones _findfirst y _findnext
 :unsure:

De antemano gracias.

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Búsqueda De Archivos En C++
« Respuesta #1 en: Martes 22 de Abril de 2008, 23:45 »
0
Primero y principal estas funciones NO son standard (ni de C ni de C++).

Primero llamas a _findfirst pasandole el lugar y la forma en que queres buscar como por ejemplo "C:\\WINDOWS\\*". Si esta funcion retorna diferente a -1 quiere decir que funciono y por logica en el campo name de la estructura _finddata_t que hayas pasado va a haber un "." (la primera entrada de cualquier directorio. Despues en un bucle llamas a _findnext usando el valor devuelto por _findfirst (ese que no tiene que ser -1). Cada vez que lo llames y retorne 0 quiere decir que hay un nuevo archivo o directorio.

Proba y lee la documentacion:
_findfirst
_findnext
_finddata_t

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

rreennee

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: Búsqueda De Archivos En C++
« Respuesta #2 en: Miércoles 23 de Abril de 2008, 00:32 »
0
Gracias Eternal Idol, me sirvió mucho tu ayuda.
Cómo puedo hacer para que el usuario me dé el archivo a buscar?
Porque si le pongo cin>> para ver que archivo buscar, al mandarlo como
parámetro en findfirst, se traba el programa


Al ejecutar el siguiente código, el programa se queda trabado

Código: Text
  1. #include<string.h>
  2. #include<iostream>
  3. #include<cstdlib>
  4. #include<io.h>
  5. struct _finddata_t fileinfo;
  6. char *file="file.cpp"; //>>>Si le pongo un valor inicial si lo busca
  7. //pero si le pongo un cin para que el usuario introduzca el archivo a buscar
  8. //o strcpy(file,"directorios.cpp");     el programa se traba
  9. int hay_archivos;
  10. main()
  11. {
  12.       _findfirst(file,&fileinfo);
  13.       cout<<"Archivo: "<<fileinfo.name;
  14.       cout<<"Tamaño: "<<fileinfo.size;
  15. system("PAUSE");
  16. }
  17.  

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re: Búsqueda De Archivos En C++
« Respuesta #3 en: Miércoles 23 de Abril de 2008, 03:35 »
0
El problema es esta linea:
Código: Text
  1.  
  2. char *file="file.cpp"
  3.  
  4.  

utilizas file como un apuntador a char, pero no le asignas espacio en memoria. En la inicializacion que utilizas, no hay problema, porque la variable apunta a una cadena constante, pero si tratas de cambiarla, es probable que sobrescribas parte de la memoria, y por lo tanto se corrompe y por eso se "traba".

La solucion es que utilices un array de caracteres, o si te decides a seguir usando apuntadores, debes utilizar new/delete.

Código: Text
  1.  
  2. /// Utilizas un array de caracteres
  3. char file[30];
  4.  
  5.  

Código: Text
  1.  
  2. /// Utilizas apuntadores/memoria dinamica
  3. char* file;
  4.  
  5. file = new char[30];
  6.  
  7. /// Debes usar delete cuando ya no quieras usar la memoria
  8. delete file;
  9.  
  10.  

Saludos :hola:

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================