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)
| | |-+  Busqueda desde txt en C++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Busqueda desde txt en C++  (Leído 5,348 veces)
cassiel83

Desconectado Desconectado

Mensajes: 16


Ver Perfil
Busqueda desde txt en C++
« en: 3 Abril 2012, 17:10 pm »

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:
Código:
arc_2012041
arc_2012042
arc_2012043
arc_2012044

y el programa es este:
Código:
#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 Desconectado

Mensajes: 301

Siempre aprendiendo


Ver Perfil WWW
Re: Busqueda desde txt en C++
« Respuesta #1 en: 3 Abril 2012, 17:49 pm »

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 Desconectado

Mensajes: 16


Ver Perfil
Re: Busqueda desde txt en C++
« Respuesta #2 en: 3 Abril 2012, 17:58 pm »

Hola, gracias. En mi listado completo si que aparecen las extensiones de los archivos, y aun asi falla
En línea

durasno


Desconectado Desconectado

Mensajes: 373


Ver Perfil
Re: Busqueda desde txt en C++
« Respuesta #3 en: 3 Abril 2012, 18:02 pm »

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 Desconectado

Mensajes: 16


Ver Perfil
Re: Busqueda desde txt en C++
« Respuesta #4 en: 3 Abril 2012, 18:39 pm »

Tenias razon habia que usar fscanf. Al final lo he puesto asi:

Código:
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 Desconectado

Mensajes: 16


Ver Perfil
Re: Busqueda desde txt en C++
« Respuesta #5 en: 4 Abril 2012, 17:29 pm »

Otra vez me he atascado  :huh:, ahora el problema es que tengo el listado:

Código:
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

durasno


Desconectado Desconectado

Mensajes: 373


Ver Perfil
Re: Busqueda desde txt en C++
« Respuesta #6 en: 4 Abril 2012, 18:10 pm »

Hola! ahi ya se complica un poco mas. Lo que se me ocurre en este momento es que usas la funcion strtok. Te dejo un link para q veas el uso de strtok
http://c.conclase.net/librerias/index.php?ansifun=strtok#inicio

Cualquier cosa segui preguntando, saludos
En línea

Ahorrate una pregunta, lee el man
cassiel83

Desconectado Desconectado

Mensajes: 16


Ver Perfil
Re: Busqueda desde txt en C++
« Respuesta #7 en: 4 Abril 2012, 20:08 pm »

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  ;D

me quedó así:

Código:
#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 Desconectado

Mensajes: 373


Ver Perfil
Re: Busqueda desde txt en C++
« Respuesta #8 en: 4 Abril 2012, 20:51 pm »

Perfecto!! solo basta adaptarlo a tu necesidad y listo :)

Saludos
En línea

Ahorrate una pregunta, lee el man
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

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 Último mensaje 10 Febrero 2006, 00:43 am
por ÃÏØ®ÌÂ
Busqueda en la RAE (rae.py)
Scripting
leogtz 1 5,058 Último mensaje 1 Abril 2010, 11:46 am
por Masita
Busqueda web
Bases de Datos
ZonaHacker 1 2,754 Último mensaje 13 Julio 2010, 04:45 am
por bomba1990
Busqueda de imagenes desde internet .NET
.NET (C#, VB.NET, ASP)
f0me 4 3,709 Último mensaje 18 Marzo 2011, 23:31 pm
por f0me
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines