C/Visual C - problema con scandir()

   
Vista:

problema con scandir()

Publicado por pablo (2 intervenciones) el 07/08/2008 13:11:48
Hola a todos!! Estoy haciendo una práctica en C bajo linux, me ha surgido un problema y estoy un poco atascado xq no se xq me ocurre, a ver si alguien puede ayudarme. Os cuento, basicamente mi duda es que al hacer un scandir para listar los archivos de un directorio, solo me devuelve un archivo y en el directorio hay varios. Os adjunto el codigo:

struct dirent **sdir = NULL;
char auxruta[20]="./archivos";
char archivos[MAXBUFF]="";
int numero_resultados=0;
strcat(auxruta,paquete.cmdStruct);
if(numero_resultados=scandir(auxruta,&sdir,NULL,NULL)>0)
{
printf("num_res: %d",numero_resultados);
for(i=0;i<numero_resultados;i++)
{
printf(" %s ",sdir[i]->d_name);
strcat(archivos,sdir[i]->d_name);
strcat(archivos,"#");
}

Cuando ejecuto me devuelve en numero_resultados 1 y hay mas archivos en la carpeta, no se si será algo del codigo que tengo mal pero vamos no veo el fallo.

Bueno gracias de antemano. Un saludo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:problema con scandir()

Publicado por Tom (481 intervenciones) el 08/08/2008 08:55:14
Es curioso, puede que esté desactualizada la pagina man, o que haya algún bug.

Pero no pasa nada, scandir() parece poner a NULL una entrada en sdir para indicar el final de la lista:

int i = 0;
while(sdir[i]) {
printf(" %s ",sdir[i]->d_name);
i++;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:problema con scandir()

Publicado por Tom (481 intervenciones) el 08/08/2008 12:35:08
Joé

A ver, como no usas parentesis, en numero_resultados estás almacenando el resultado de comparar scandir() con 0.

el if debe ser este:

if((numero_resultados = scandir(auxruta,&sdir,NULL,NULL)) > 0) {
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar