So I have this piece of code that shows all the files of a directory on my raspberry PI by launchint it like: "./Readdir /etc". I need to modifiy it so that it also prints the size of the files. I tried adding another print statement that prints the size of a struct like this: printf(sb.st_size)
, sb being declared as struct stat sb
, but this only prints the size of the directory itself. Anyone know how to help me? Thanks in advance!
/* Readdir.c - Read the current working directory */
#include <dirent.h>
#include <errno.h>
#include <stdio.h>
#include <string.h>
int main(int argc, char * argv[]) {
if(argc>=2) {
DIR *dirp = opendir(argv[1]) ;
if ( dirp != NULL ) {
struct dirent *dp ;
while ((dp = readdir(dirp))) {
char t;
switch( dp->d_type ) {
case DT_BLK : t = 'b' ; break ;
case DT_CHR : t = 'c' ; break ;
case DT_DIR : t = 'd' ; break ;
case DT_FIFO : t = 'p' ; break ;
case DT_LNK : t = 'l' ; break ;
case DT_REG : t = '-' ; break ;
case DT_SOCK : t = 's' ; break ;
case DT_UNKNOWN : t = 'u' ; break ;
default : t = '?' ;
}
printf("%8d %c %s\n", (int)dp->d_ino, t, dp->d_name);
}
closedir(dirp);
}
return 0;
} else {
printf("usage: %s dir\n", argv[0]);
return 1;
}
}
when the
dp->d_type
field is:DT_REG
Then