Autor
|
Tema: Busqueda desde txt en C++ (Leído 5,348 veces)
|
cassiel83
Desconectado
Mensajes: 16
|
Buenas tardes a todos tengo un problema con un programa que lee desde un listado txt los nombres de unos archivos, luego llama a una funcion que intenta abrirlos uno a uno para considerar si existen o no. El problema es que si escribo directamente el nombre del archivo en el programa lo encuentra, pero si lo lee desde el listado, lo mete en un string y se lo pasa a la función no lo hace. Alguna idea de donde puede estar el fallo?. Gracias de antemano El listado tiene esta forma: arc_2012041 arc_2012042 arc_2012043 arc_2012044 y el programa es este: #include <stdio.h>
//funcion de existencia void existe(char archivo[60]);
//programa principal int main () { char archivo1[30]; char ruta[60];
FILE *listado;
listado = fopen("lista.txt", "r"); if (listado==NULL) { printf("No se encuentra el listado\n"); return 1; }
while (fgets(archivo1, 30, listado)!=NULL) { sprintf(ruta,"D:\\carpeta\\%s",archivo1); existe(ruta); } fclose(listado); return 0; }
//funcion de existencia void existe(char archivo[60]) { FILE *faux;
faux = fopen(archivo, "r"); if (faux==NULL) printf("archivo no encontrado\n"); else { printf("archivo encontrado\n"); fclose(faux); } }
|
|
|
En línea
|
|
|
|
satu
Desconectado
Mensajes: 301
Siempre aprendiendo
|
Hola
Ahora estoy en clase y no puedo ver bien el código (en estas pantallas se ve fatal y no puedo probarlo), pero no veo nada raro, lo único que se me ocurre es que escribas las extensiones de los archivos en el listado. Si sigues con problemas intentaré verlo luego en casa o que alguien más entre y lo vea.
Saludos
|
|
|
En línea
|
Breakbeat como forma de vida
|
|
|
cassiel83
Desconectado
Mensajes: 16
|
Hola, gracias. En mi listado completo si que aparecen las extensiones de los archivos, y aun asi falla
|
|
|
En línea
|
|
|
|
durasno
Desconectado
Mensajes: 373
|
Hola! si tu listado tiene esta forma: arc_2012041 arc_2012042 arc_2012043 arc_2012044 lo mas probable que el error sea al usar fgets(archivo1, 30, listado). fgets lee hasta encontrar el ENTER el cual tambien es almacenado en el arreglo archivo1 No es lo mismo abrir una cadena como "arc_2012041" que "arc_2012041\n".. Con fgets el salto de linea tambien pertenec al string
Te combiene usar fscanf o generar un ciclo con fgetc
Saludos
|
|
|
En línea
|
Ahorrate una pregunta, lee el man
|
|
|
cassiel83
Desconectado
Mensajes: 16
|
Tenias razon habia que usar fscanf. Al final lo he puesto asi: while (fscanf(listado,"%s", archivo1)!=EOF) { sprintf(ruta,"D:\\carpeta\\%s",archivo1); existe(ruta); } Muchas gracias
|
|
« Última modificación: 4 Abril 2012, 15:35 pm por cassiel83 »
|
En línea
|
|
|
|
cassiel83
Desconectado
Mensajes: 16
|
Otra vez me he atascado , ahora el problema es que tengo el listado: arc_201201.txt;10;20;30 arc_201202.txt;11;22;33 arc_201203.txt;12;23;34 arc_201204.txt;13;25;36 y no encuentro la manera de pasar los campos separados por el ";" a una variable para luego pasarla a la función. he intentado hacerlo con un bucle con fgetc para que lea hasta encontrar el separador o el salto de linea pero esta funcion devuelve solo un caracter a la vez. alguna idea de como podría hacerlo. Gracias y saludos.
|
|
|
En línea
|
|
|
|
|
cassiel83
Desconectado
Mensajes: 16
|
Hola, ya lo he resuelto gracias a tu ayuda, funciona lo mas importante, ahora solo falta pulirlo, es cuestión de modificar un poco el bucle. muchas gracias me quedó así: #include <stdio.h> #include <string.h>
int main() { char var1[20]; char linea[50]; char token[5] = ";"; char *ptr; FILE *listado; listado = fopen("lista.txt", "r");
while (fscanf(listado,"%s", linea)!=EOF) { printf( "linea=%s\n", linea ); ptr = strtok( linea, token ); sprintf(var1,"%s",ptr); printf("en variable %s\n", var1); while( (ptr = strtok( NULL, token )) != NULL ) { sprintf(var1,"%s",ptr); printf("en variable %s\n", var1); } } return 0; }
|
|
|
En línea
|
|
|
|
durasno
Desconectado
Mensajes: 373
|
Perfecto!! solo basta adaptarlo a tu necesidad y listo Saludos
|
|
|
En línea
|
Ahorrate una pregunta, lee el man
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
como puedo hacer una busqueda de archivos desde vb
Programación Visual Basic
|
lestat1745
|
3
|
2,535
|
10 Febrero 2006, 00:43 am
por ÃÏØ®ÌÂ
|
|
|
Busqueda en la RAE (rae.py)
Scripting
|
leogtz
|
1
|
5,058
|
1 Abril 2010, 11:46 am
por Masita
|
|
|
Busqueda web
Bases de Datos
|
ZonaHacker
|
1
|
2,754
|
13 Julio 2010, 04:45 am
por bomba1990
|
|
|
Busqueda de imagenes desde internet .NET
.NET (C#, VB.NET, ASP)
|
f0me
|
4
|
3,709
|
18 Marzo 2011, 23:31 pm
por f0me
|
|