Páginas: [1]
|
 |
|
Autor
|
Tema: Intento hacer un catalogador de archivos en c (Leído 448 veces)
|
Salgaw
Desconectado
Mensajes: 59
Love is a little death between two little lives
|
Buenas. Quiero hacer un programa que guarde el nombre de los archivos que hay en cada cd y luego lo guarde en un fichero. Lo que no tengo ni idea de hacer es conseguir leer el nombre de los ficheros del cd. A ver si me podeis ayudar, Gracias.
|
|
|
|
|
En línea
|
|
|
|
P[i]
Desconectado
Mensajes: 442
|
Supongo que debe de haber una funcion de windows que haga eso, mira en www.msdn.com pero si no lo escuentras siempre lo podras hacer manualmente, algo como esto: int main() {
char letras[] = { abc.... } char buffer[25];
for ( x = 0; x <21 ; x++ ) { strcpy(buffer,letras[x]) if ( fopen ( buffer , "rb" ) == 0 ) { FILE *archivo; archivo = fopen ( "log.txt" , "at"); fprintf(archivo," %s \n ",buffer); } } Este programa no vale de muscho solo es para darte una idea, de como se tendria que hacer. Ni sikiera se si esta bien el if, pero la idea esta clara no, vas creado nombre y compruevas y se habren correctamente y se habre pues lo guardas. Pero mira primero en msdn que tiene que haber algo, esto solo es para salir del paso. Saludos
|
|
|
|
|
En línea
|
|
|
|
Salgaw
Desconectado
Mensajes: 59
Love is a little death between two little lives
|
He estado mirando MSDN muchas veces pero nunca encuentro lo que busco. A ver si alguien me puede guiar un poquito y decirme en que sección podria estar o algo porque no se como buscarlo, Gracias.
|
|
|
|
|
En línea
|
|
|
|
viruss1362
Desconectado
Mensajes: 200
|
pero que quieres guardar el nombre de los archivos de un cdrom en un fichero de texto?
|
|
|
|
|
En línea
|
Más vale parecer un idiota con la boca cerrada, que abrir la boca y demostrar que lo eres
|
|
|
Salgaw
Desconectado
Mensajes: 59
Love is a little death between two little lives
|
si virus.. eso es lo que quiero hacer. Aunque si veo que no soy capaz de hacerlo lo haré con linux que es mucho mas facil y ale. Pero bueno me gustaria hacerlo en c.
|
|
|
|
|
En línea
|
|
|
|
viruss1362
Desconectado
Mensajes: 200
|
hombre en windows puedes hacerlo de manera facil:
Seria poner system("e:\"); para que entrara en el cd y luego otra llamada system("dir"); y te daria lo que hay dentro y lo añades a un archivo de texto, pero si haces esto las dos llamdas las tienes que pasar juntas, ya que si pone primero una y luego otra no ira
|
|
|
|
|
En línea
|
Más vale parecer un idiota con la boca cerrada, que abrir la boca y demostrar que lo eres
|
|
|
Salgaw
Desconectado
Mensajes: 59
Love is a little death between two little lives
|
Vale he estado mirando la orden system y mirando algún ejemplo pero no me rula. Este mismo ejemplo me va todo excepto el dir. http://c.conclase.net/librerias/funcion.php?fun=systemEn la ayuda del turbo c, dice que es necesario tener el interprete de comandos en una de las rutas de environment. He probado de meter el cmd.exe en esas rutas pero no funciona. Se debe de poner con un nombre especifico? Que hago mal? Gracias
|
|
|
|
|
En línea
|
|
|
|
viruss1362
Desconectado
Mensajes: 200
|
#include <stdio.h> #include <stdlib.h>
/* Sólo funcionará si "dir" es aceptable por el sistema: MS-DOS, por ejemplo */
int main( void ) { puts( "La lista de ficheros en el directorio actual, segun el comando \"dir\":" );
system( "dir" );
return 0; } Pues el ejemplo que has puesto, lo compilo lo ejecuto y si me va, mira: C:\>prueba2 La lista de ficheros en el directorio actual, segun el comando "dir": El volumen de la unidad C no tiene etiqueta. El número de serie del volumen es: 94C0-CE17
Directorio de C:\
11/07/2005 01:47 188.492 ads.exe 03/08/2005 12:58 <DIR> AppServ 11/09/2005 23:41 <DIR> Archivos de programa 30/06/2005 15:47 <DIR> ATI 30/06/2005 15:02 0 AUTOEXEC.BAT
|
|
|
|
|
En línea
|
Más vale parecer un idiota con la boca cerrada, que abrir la boca y demostrar que lo eres
|
|
|
|
Gangrel
|
Bueno eso esta bien para mostrar los directorios en pantalla, pero si lo que quieres es guardar en fichero.
#include<stdio.h> #include<string.h> #include<dirent.h> #include<sys\stat.h>
int main() { DIR *directorio; dirent *entdir; char archivo[256];
dir=opendir("d:\");
while((entdir = readdir(dir)) != NULL) //lee archivos y carpetas del directorio, //asta ya no encontrar ninguno { strcpy(archivo,entdir->d_name); //aqui agregarias la cadena entdir->d_name al fichero, previamente abierto, pero esque no recuerdo eso de guardar en ficheros } }
Y con este codigo, en cada vuelta del while en la estructura entdir->d_name obtendras el nombre de un archivo deltro del directorio abierto.
|
|
|
|
|
En línea
|
|
|
|
|
Gangrel
|
Lo siento, este codigo ya no tiene errores
#include<stdio.h> #include<string.h> #include<dirent.h> #include<sys\stat.h>
int main() { DIR *directorio; dirent *entdir; char archivo[256];
directorio=opendir("d:\");
while((entdir = readdir(directorio)) != NULL) //lee archivos y carpetas del directorio, //asta ya no encontrar ninguno { strcpy(archivo,entdir->d_name); //aqui agregarias la cadena entdir->d_name al fichero, previamente abierto, pero esque no recuerdo eso de guardar en ficheros } }
|
|
|
|
|
En línea
|
|
|
|
Salgaw
Desconectado
Mensajes: 59
Love is a little death between two little lives
|
Ya me funciona. Si lo ejecuto desde el turbo c no me funciona, pero en cuanto lo he probado desde ms-dos no ha habido ningun problema. Bueno ya tengo más o menos todo en mente... si surge algún problema ya pediré ayuda, Gracias a todos.
|
|
|
|
|
En línea
|
|
|
|
|
Páginas: [1]
|
|
|
|