Laufzeitfehler



  • #define _WIN32_WINNT 0x0501
    
    #include <windows.h>
    #include <string.h>
    #include <stdio.h>
    #include <iostream>
    #include <fstream>
    #include <conio.h>
    using namespace std;
    
    int main(int argc, char *argv[])
    {
       if (argc == 1)
       {
           cout << "error: argc == 1\n";
           getch();
           return 0;
       }
    
       WIN32_FIND_DATA FindFileData;
       HANDLE hFind = INVALID_HANDLE_VALUE;
       char DirSpec[MAX_PATH + 1];
       DWORD dwError;
       string beta[] = {};
       int ceta = 0;
       string alpha[] = {};
       int delta = 0;
       unsigned long sizeb[] = {};
    
       printf ("---------- directory %s. ----------\n", argv[1]);
       strncpy (DirSpec, argv[1], strlen(argv[1])+1);
       strncat (DirSpec, "\\*", 3);
    
       hFind = FindFirstFile(DirSpec, &FindFileData);
    
       if (hFind == INVALID_HANDLE_VALUE)
       {
          printf ("Invalid file handle. Error is %u\n", GetLastError());
          return (-1);
       }
    
       else
       {
           while (FindNextFile(hFind, &FindFileData) != 0)
           {
               if( FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY )
               {
                   beta[ceta] = FindFileData.cFileName;
                   ceta++;
               }
               else
               {
                   ifstream b(FindFileData.cFileName);
                   alpha[delta] = FindFileData.cFileName;
                   b.seekg(0L,ios_base::end);
                   sizeb[delta] = b.tellg();
                   delta++;
               }
    
           }
          dwError = GetLastError();
          FindClose(hFind);
          if (dwError != ERROR_NO_MORE_FILES)
          {
             printf ("FindNextFile error. Error is %u\n", dwError);
             return (-1);
          }
       }
       beta[ceta+1] = '\0';
       alpha[delta+1] = '\0';
       sizeb[delta+1] = '\0';
       for(int g = 0; g< ceta+1;)
       {
           cout << beta[g] << "\n";
           g++;
       }
       for(int h = 0; h< delta+1;)
       {
           cout << alpha[h] << "\t\t" << sizeb[h];
           h++;
       }
       system("pause");
    
       return 0;
    }
    

    Ich schreibe die Dateinamen in die Arrays damit ich erst die Verzeichnisse und dann die Dateien ausgeben kann.

    MFG idiologe



  • Du legst deine Arrays mit einer Größe von 0 Elementen an (evt. auch 1 - jedenfalls zu klein), da brauchst du dich über Fehler nicht zu wundern. Wenn du willst, daß die Arrays mitwachsen, nimm lieber STL-Container (vector<>) zum Aufbewahren deiner Namenslisten.



  • kann ich nicht eine unbestimmte menge bestimmen?

    ich habe noch nicht mit vector gearbeitet. wie würde das ausssehen?

    soll ich new und delete benutzen? nachteil ist ja nur, dass das auf den heap kommt und nicht auf den stack


Anmelden zum Antworten