User Tag List

Resultados 1 al 15 de 15

Tema: Pistas para navegador de directorios y archivos en C.

  1. #1

    Fecha de ingreso
    Sep 2004
    Ubicación
    Santa Cruz de TENERIFE
    Mensajes
    1,845
    Mencionado
    9 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    91
    Agradecer Thanks Received 
    45
    Thanked in
    Agradecido 37 veces en [ARG:2 UNDEFINED] posts

    Pistas para navegador de directorios y archivos en C.

    Buenas, estoy intentando hacer un navegador de archivos y carpetas sin entorno grafico, como lo fue el file commander en su dia o como son basicamente los cargadores de roms de cualquier emu, el caso es que solo he conseguido lo siguiente:
    Para mostrar o listar carpetas y archivos:
    system("dir /B")

    Para ir a una ruta directamente:
    chdir (ruta)

    El problema es que no se como cambiar rutas sin teclado...solo con los botones de la consola y sin entorno grafico.
    Se me ocurrio hacer lo siguiente (no se rian please que estoy empezando... y hace siglos que no programaba.)
    system("dir /B") //Para verlo en pantalla
    system("dir /B >> temp.txt) // para guardar temporalmente el listado de carpetas y archivos donde estoy

    posteriormente, pretendo meter cada linea de ese txt, a cadenas de un array bidimensional para segun pulses arriba o abajo, con un contador o flag, saber a que linea corresponde y pasarselo como valor a chdir...

    Eso es una gran chapuza?
    Como se hace realmente?

    Por favor, una ayuda, me gustaría ir poco a poco metiendo extras tipo copiar, pegar, cortar, etc.

    Muchas gracias

    p.d: Lo he puesto aqui, xq pretendo que sea para Caanoo y windows, pero sobre todo para por ejemplo, si alguien me dice, tengo unas fotos, documentos o o que sea en el pendrive que son la leche, poder pincharlo, navegar por carpetas, copiarlo a mi SD sin necesidad de un PC o similares y de paso mejorar cada vez un poco mas en esto de programacion en C.

  2. #2

    Fecha de ingreso
    Mar 2007
    Ubicación
    Barna
    Mensajes
    10,341
    Mencionado
    93 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    368
    Agradecer Thanks Received 
    1,791
    Thanked in
    Agradecido 944 veces en [ARG:2 UNDEFINED] posts
    Las funciones estándar para leer directorios están en dirent.h. Aquí su documentación: http://www.gnu.org/software/libc/man...ng-Directories

    Una de las ventajas de la scene es que mucho del código es libre. Puedes mirar cualquiera del código del programa que más te guste y verás algún ejemplo de gestión de directorios. El caso más evidente son los emuladores: busca el código del emulador que más te guste y aprende.

    Me costa por ejemplo que lemonboy incluye un navegador de archivos...

  3. #3

    Fecha de ingreso
    Sep 2004
    Ubicación
    Santa Cruz de TENERIFE
    Mensajes
    1,845
    Mencionado
    9 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    91
    Agradecer Thanks Received 
    45
    Thanked in
    Agradecido 37 veces en [ARG:2 UNDEFINED] posts
    Muchas muchas muchas gracias.... lo mirare a ver que saco y en cuanto tenga algo minimamente decente, si lo tengo, lo pongo aqui para todos.
    Un saludo

  4. #4

    Fecha de ingreso
    Jan 2008
    Ubicación
    Madrid
    Mensajes
    4,447
    Mencionado
    14 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    86
    Agradecer Thanks Received 
    155
    Thanked in
    Agradecido 91 veces en [ARG:2 UNDEFINED] posts
    También tienes el código fuente del Selector, portado por Misato, ahí puedes ver cómo se recorre un directorio en Linux.

  5. #5

    Fecha de ingreso
    Sep 2004
    Ubicación
    Santa Cruz de TENERIFE
    Mensajes
    1,845
    Mencionado
    9 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    91
    Agradecer Thanks Received 
    45
    Thanked in
    Agradecido 37 veces en [ARG:2 UNDEFINED] posts
    Esta en su blog verdad?
    Misato gracias adelantadas, echare un ojo.
    Gracias Hardyx

  6. #6

    Fecha de ingreso
    Apr 2007
    Ubicación
    Rostovillar
    Mensajes
    3,783
    Mencionado
    11 Post(s)
    Tagged
    1 Tema(s)
    Agradecer Thanks Given 
    1,016
    Agradecer Thanks Received 
    407
    Thanked in
    Agradecido 256 veces en [ARG:2 UNDEFINED] posts
    Cita Iniciado por juanvvc Ver mensaje
    Las funciones estándar para leer directorios están en dirent.h. Aquí su documentación: http://www.gnu.org/software/libc/man...ng-Directories
    Además es multiplataforma (funciona en tu PC sea el sistema operativo que sea, y en la consola), por lo que podrás depurar en tu máquina local si tienes dos targets de compilación, es decir, que el mismo código funciona en las dos plataformas.
    Buy this car to drive to work. Drive to work to pay for this car.

  7. #7

    Fecha de ingreso
    Sep 2004
    Ubicación
    Santa Cruz de TENERIFE
    Mensajes
    1,845
    Mencionado
    9 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    91
    Agradecer Thanks Received 
    45
    Thanked in
    Agradecido 37 veces en [ARG:2 UNDEFINED] posts
    Genial, una cosa, en el codigo de Misato, he visto esto:
    Código:
    char *uppercase (char * cadena)
    {
    ...
    }
    Que es uppercase? no lo que hace sino que es en C... porque he dado punteros, *uppercase
    He dado funciones, char uppercase(paso por valor o referencia);

    pero una funcion puntero? y ese asterisco suelto dentro de los argumentos?

    Gracias

    edit: y cuando ponen doble asterisco?

    char** ReadConfig(); que tipo de funcion declara con esos asteriscos?
    Última edición por Neodreamer; 18/05/2012 a las 14:54

  8. #8

    Fecha de ingreso
    Jan 2008
    Ubicación
    Madrid
    Mensajes
    4,447
    Mencionado
    14 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    86
    Agradecer Thanks Received 
    155
    Thanked in
    Agradecido 91 veces en [ARG:2 UNDEFINED] posts
    Estás muy verde con el C. Que no te confundan los espacios en blanco. char *uppercase() es lo mismo que char* uppercase(), es decir una función que devuelve una cadena de carácteres. Mejor dicho, crea una cadena de carácteres y devuelve un puntero a su primer carácter. Vamos, una cadena de C. Y el parámetro char * cadena, es lo mismo que char* cadena, es decir un parámetro que acepta una cadena de carácteres de entrada. Es decir, un puntero al primer carácter de una cadena.

  9. #9

    Fecha de ingreso
    Sep 2004
    Ubicación
    Santa Cruz de TENERIFE
    Mensajes
    1,845
    Mencionado
    9 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    91
    Agradecer Thanks Received 
    45
    Thanked in
    Agradecido 37 veces en [ARG:2 UNDEFINED] posts
    Y tan verde... solo habia dado el puntero en funcion como paso por referencia en argumentos, nunca como devolucion de la propia funcion. "interesante".
    Creia que solo se podia, "dato a devolver nombre_funcion(dato recibido por valor, dato recibido por referencia en *puntero);
    Pero veo que hay mas opciones... jejejeje
    Y lo del doble asterisco?

  10. #10

    Fecha de ingreso
    Jan 2008
    Ubicación
    Madrid
    Mensajes
    4,447
    Mencionado
    14 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    86
    Agradecer Thanks Received 
    155
    Thanked in
    Agradecido 91 veces en [ARG:2 UNDEFINED] posts
    char** ReadConfig() es una función que devuelve un puntero a punteros de carácteres, o lo que es lo mismo en C, un array de cadenas. Una lista de cadenas para que lo entiendas. En C los arrays son punteros. Es lo mismo poner int numeros[], que poner int *numeros;

  11. #11

    Fecha de ingreso
    Sep 2004
    Ubicación
    Santa Cruz de TENERIFE
    Mensajes
    1,845
    Mencionado
    9 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    91
    Agradecer Thanks Received 
    45
    Thanked in
    Agradecido 37 veces en [ARG:2 UNDEFINED] posts
    Entonces si pongo int** numeros; es lo mismo que int numeros[][]?????

  12. #12

    Fecha de ingreso
    Jan 2008
    Ubicación
    Madrid
    Mensajes
    4,447
    Mencionado
    14 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    86
    Agradecer Thanks Received 
    155
    Thanked in
    Agradecido 91 veces en [ARG:2 UNDEFINED] posts
    Ahí le has dado. Pero ten en cuenta que si lo pones como puntero, eres responsable de reservar memoria para ese array. Si lo haces como int numeros[10][10], es un array estático y te lo reserva el compilador. En el caso de las funciones que devuelven punteros, son las funciones las que lo reservan.

  13. #13

    Fecha de ingreso
    Sep 2004
    Ubicación
    Santa Cruz de TENERIFE
    Mensajes
    1,845
    Mencionado
    9 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    91
    Agradecer Thanks Received 
    45
    Thanked in
    Agradecido 37 veces en [ARG:2 UNDEFINED] posts
    oh jojojo, acabas de abrirme los ojos a mi y a mi profesor (creo) porque cada ejercicio que haciamos de arrays o cadenas, siempre reservaba un valor fijo e incluso lo ponia como define y yo le decia que para eso era mejor cuando jugabamos con bucles y tal, poner el array como puntero y luego averiguar con strlen el maximo que media para jugar con el bucle for o while, etc...
    Odio los punteros, pero cada vez le voy viendo mas utilidad
    Gracias

    P.D: tambien estoy con ensamblador(empezando totalmente, mas en segundo) para pics en este ciclo superior de electronica, por si quereis ayudarme jejejejeje

  14. #14

    Fecha de ingreso
    Jan 2008
    Ubicación
    Madrid
    Mensajes
    4,447
    Mencionado
    14 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    86
    Agradecer Thanks Received 
    155
    Thanked in
    Agradecido 91 veces en [ARG:2 UNDEFINED] posts
    Está bien poner una longitud fija en los arrays hasta que no sepas manejar bien la memoria dinámica, porque si estás aprendiendo y te metes con memoria dinámica vas a flipar en colores. Aún así, no puedes usar char *p para guardar una cadena sin asignarle memoria primero (con malloc o new), o apuntar a algo ya asignado.
    Última edición por hardyx; 18/05/2012 a las 20:29

  15. #15

    Fecha de ingreso
    Sep 2004
    Ubicación
    Santa Cruz de TENERIFE
    Mensajes
    1,845
    Mencionado
    9 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    91
    Agradecer Thanks Received 
    45
    Thanked in
    Agradecido 37 veces en [ARG:2 UNDEFINED] posts
    Gracias, justo hoy hemos empezado eso en clase con las pilas, memoria dinamica, etc.
    A ver si le voy cogiendo el tranquillo. Nos queda solo este tema, el de ficheros y ya despues programacion pic con Ansi C. (Aparte de lo que ya estanis dando en ensamblador)

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •