[C/WinApi] przeglądanie katalogów

0

Witam potrzebuje pomocy wydziergałem coś takiego w C no i jak wiekszosć moich programów nie działa drukują sie krzaki, może ktoś kto programuje w WinApi pomoże . Proszę

Funkcja drukująca pliki i foldery, po podaniu ścieżki do jakiegoś katalogu . zawraca tablice z plikami(ścieżkę dostępu do pliku):

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <windows.h>

#define PATHSIZE 256
#define MAXFILES 1024
     
char *filesTab[MAXFILES]; //tablica z plikami
unsigned short iFiles=0; //ilość plików w tablicy
void pliki(char *path);

int main(void)
{
      int i;
      pliki("C:\\data1\\DniSwiateczne\\*.*");
      //tutaj obsługa plików z tablicy "filesTab", "iFiles" - ilość plików
     system("PAUSE");
     return 0;
}


void pliki(char *path)
{
     HANDLE hFind;
     BOOL bContinue = TRUE;
     WIN32_FIND_DATA data;
     int a;
     hFind = FindFirstFile(path, &data);
     while (hFind && bContinue)
     {
          if (data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
          {
               if(strcmp(data.cFileName,".") && strcmp(data.cFileName,".."))                      //jeżeli nie są to foldery '.' i '..' (wyższe foldery)
               {
                    char newPath[PATHSIZE];

                    strcpy(newPath, data.cFileName);
                    strcat(newPath, "\\*.*");
                    strncpy(newPath,path, strlen(path)-3);

                    puts(newPath);

               }
          }
          else
          {         
               filesTab[iFiles] =(char*)malloc(sizeof(char)*(strlen(path)-3+strlen(data.cFileName)+2));
               strncpy(filesTab[iFiles], path, strlen(path)-3);
               filesTab[iFiles][strlen(path)-3]=NULL;
               strcat(filesTab[iFiles], data.cFileName);
               printf("%s\n", filesTab[iFiles]);
               iFiles++;
          }
     bContinue = FindNextFile(hFind, &data);
}
FindClose(hFind);
}
0
malina napisał(a)

strcpy(newPath, data.cFileName);
strcat(newPath, "\.");
strncpy(newPath,path, strlen(path)-3);
o to chodzi:

                    strncpy(newPath,path, strlen(path)-3);
                    strcpy(newPath + strlen(path) - 3, data.cFileName);
                    strcat(newPath, "\\*.*");

?

Poza tym głupio zrobiłeś, że parametr 'path' musi mieć doklejone ".", raczej doklejaj maskę wewnątrz funkcji 'pliki'. Wtedy doklejaj też "\" jeśli nie ma go na końcu ścieżki.

1 użytkowników online, w tym zalogowanych: 0, gości: 1