C/Visual C - Problema con un array

 
Vista:

Problema con un array

Publicado por Stella (1 intervención) el 10/03/2003 06:46:20
Hola!

Soy nueva en el foro, y espero que puedan sacarme de este apriteto.
El siguiente codigo lo que hace es buscar ficheros *.doc en la carpeta del programa, y los almacena en el array \"documentosEncontrados\".

WIN32_FIND_DATA fd;
HANDLE hSearch;
int i = 0;
char pszSearchName[] = \".\\\\*.doc\";
LPSTR documentosEncontrados[69];

hSearch = FindFirstFile(pszSearchName, &fd);
if(hSearch != INVALID_HANDLE_VALUE)
{
do
{
documentosEncontrados[ i ] = fd.cFileName;
i++;
} while(FindNextFile(hSearch, &fd));
FindClose(hSearch);
} else {
MessageBox (hwnd, \"Error al buscar archivos\" , \"¡Error!\", 0 + MB_ICONHAND);
}

El problema está en que pone en todos los valores del array el nombre de uno de los ficheros que encuentra.
Osea si existen Hola.doc, Hola2.doc Hola3.doc
En el array documentosEncontrados quedan:
documentosEncontrados[0]=\"Hola.doc\";
documentosEncontrados[1]=\"Hola.doc\";
documentosEncontrados[2]=\"Hola.doc\";

Por que sucede esto¿¿??

Muchas gracias

Stella
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 un array

Publicado por Malandrin (29 intervenciones) el 12/03/2003 00:00:45
Hola,

He copiado tu código y lo he hecho funciona y el "problema" está en FindNextFile que no se porque sobreescribe los valores del array (quizás porque cFileName es un char[MAX_PATH] y tu tienes un array de LPSTR no lo se...

He sustituido:
LPSTR documentosEncontrados[69];
por:
char documentosEncontrados[MAX_PATH][69];
y:
documentosEncontrados[ i ] = fd.cFileName;
por :
strcpy(documentosEncontrados[i], fd.cFileName);

Y ya funciona perfectamente... ten cuidado con crear el array con un tamaño fijo (69), pq como haya más de 69 ficheros .doc en el directorio tendrás problemas :)

Un saludin,

César.
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