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;
}