Einzelnen Beitrag anzeigen
Ungelesen 30.06.10, 23:21   #13
wa53kefa
Newbie
 
Registriert seit: Nov 2009
Beiträge: 66
Bedankt: 11
wa53kefa ist noch neu hier! | 0 Respekt Punkte
Standard

Hallo,

ich habe gerade bemerkt, dass ich das nicht gespeicherte Programm gepostet habe.
Es fehlte noch eine wichtige Fehlerabfrage die ich noch hinzugefügt habe.
Ob stat funktioniert hat oder wenn nicht, wieso es nicht funtioniert hat.

Hier mein verändertes Programm, wo ich eure Anregungen miteingebracht habe:
Code:
#include <stdio.h>
#include <sys/types.h>
#include <dirent.h>
#include <string.h>
#include <errno.h>
#include <sys/stat.h>
#include <unistd.h>
#include <stdlib.h>
	 
int main (void){
	DIR *dp = NULL;
	struct dirent *ep = NULL;
	struct stat buf;
	long unsigned int total = 0;
	int x = 0;


	dp = opendir (".");
	if (NULL == dp) {
		perror ("opendir");
		exit(-1);
	}

	while (errno=0, NULL != (ep = readdir (dp))){
		if(ep->d_name[0]!='.'){
			x = stat(ep->d_name, &buf);		/*prüfen ob stat fehlschlaegt*/
			if(-1 == x){
				fprintf(stderr, "Getting information from file %s failed with reason : %s\n",
				ep->d_name, strerror(errno));
			}else if(0 == x){			
				if (! S_ISREG(buf.st_mode)){
					/*fprintf(stderr, "Not a regular File!\n");*/
				}else{
					printf("%lu\t%s\n", buf.st_size, ep->d_name);
					total ++;
				}
			}			
		}
	}
	printf("Total: %lu\n",total);
	
	closedir (dp); /*Keine Fehlerueberpruefung, da der einzige Fehler der Uebergabeparameter seien kann, den ich aber von opendir() uebergeben bekomme.*/
	return 0;
}
wa53kefa ist offline   Mit Zitat antworten