sortierte Dateiausgabe für Server und Windows



  • Hallö,
    ich habe gerade erst mit C angefangen und möchte ein Programm schreiben, dass mir aus einem Verzeichnis alle Dateien ausgibt, die älter sind als 30 Tage.
    Bisher gibt es mir alle Dateien aus, die in dem Verzeichnis stehen, zu mindestens unter Windows. Auf dem Server bricht er ab (leider keine Fehlerausgabe möglich).
    Könnt ihr mir sagen, woran es liegt?
    Ich bin auch offen für Verbesserungen etc:)
    Schon einmal vielen lieben Danke.

    /*Ausgabe eines Verzeichnisses*/
    #include <stdio.h>
    #include <stdlib.h>
    #ifdef __unix__
    #include <dirent.h>
    #include <sys/types.h>
    
     list_dir(const char* path) {
    	DIR *dirptr;
    	struct dirent *dir;
    	if (dirptr = opendir(path)) == NULL)
    	return;
    	while ((dir == readdir(dirptr)) != NULL)
    		printf("%s\n", dir->d_name);
    	closedir(dirptr);
    }
    
    #elif __WIN32__ || _MSC_VER
    #include <Windows.h>
    
     void list_dir(const char* path) {
    	WIN32_FIND_DATA dir;
    	HANDLE fhandle;
    	char directory[256];
    
    	
    	sprintf_s(directory, "%s\\*.*", path);
    	/*Handle auf das Verzeichnis*/
    	if ((fhandle = FindFirstFile(directory, &dir)) != INVALID_HANDLE_VALUE) {
    		do {
    			/*Verzeichnis auslesen*/
    			printf("%s\n", dir.cFileName);
    		} while (FindNextFile(fhandle, &dir));
    	}
    	FindClose(fhandle);
    }
    #endif
    
    int main(int argc, char* argv[]) {
    
    	if (argc < 2) {
    		list_dir(".");
    	}
    	else
    	{
    		list_dir(argv[1]);
    	}
    	return EXIT_SUCCESS;
    
    }
    
    


  • @Cia
    C ist weder C++ noch MFC.

    Könnt ihr mir sagen, woran es liegt?

    An welcher Stelle findet die Prüfung "älter als 30 Tage" statt?



  • This post is deleted!


  • @Cia
    Also mit anderen Worten, du suchst jemanden, der die den Unix Code debuggt, weil du keinen vernünftigen Zugriff auf deinen Server hast?



  • @manni66 eher mit hilft, wie ich das mache. Ich hab wie gesagt erst vor kurzem mit Programmieren angefangen und bin noch mit allem sehr überfordert.



  • @manni66 und das mit der Abfrage für die Tage wäre dann ca so:
    (ich brauch nur die Ausgabe von den Dateien, um das Datumsformat an diese anpassen zu können (glaube ich :D))

    /*Ausgabe Zeit*/
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    
    int main(void)
    {
    
    
    	time_t ltime;
    	double diff,
    
    		/*Unix-timestamp*/
    		int currentTime = time(&ltime);
    
    
    		/*Datum je Datei abfragen*/
    		int data_time;
    
    	/*Vergleich mit aktuellem Datum*/
    	/*wenn > 30, jeweilige Dateien als Liste ausgeben*/
    	do {
    		printf("%s\n", dir.cFileName);
    	} while
    		(diff = difftime(currentTime, data_time) > 30);
    	return 0;
    }
    
    		
    
    

Log in to reply