KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
As a part of an assignment from one of my classes, I have to write a program in C to duplicate the results of the ls -al command. I have read up on the necessary materials but I am still not getting the right output. Here is my code so far, its only supposed to print out the file size and the file name, but the file sizes its printing are not correct. Code: #include <sys/types.h> #include <sys/stat.h> #include <unistd.h> #include <stdio.h> #include <stdlib.h> #include <dirent.h> int main(int argc, char* argv[]) { DIR *mydir; struct dirent *myfile; struct stat mystat; mydir = opendir(argv[1]); while((myfile = readdir(mydir)) != NULL) { stat(myfile->d_name, &mystat); printf("%d",mystat.st_size); printf(" %s\n", myfile->d_name); } closedir(mydir); } These are my results after executing the code: [root@localhost ~]# ./a.out Downloads 4096 .. 4096 hw22.c 4096 ankur.txt 4096 . 4096 destination.txt Here are the correct sizes: [root@localhost ~]# ls -al Downloads total 20 drwxr-xr-x. 2 root root 4096 Nov 26 01:35 . dr-xr-x---. 24 root root 4096 Nov 26 01:29 .. -rw-r--r--. 1 root root 27 Nov 21 06:32 ankur.txt -rw-r--r--. 1 root root 38 Nov 21 06:50 destination.txt -rw-r--r--. 1 root root 1139 Nov 25 23:38 hw22.c Can anyone please point out my mistake. Thanks, Ankur
Tags (comma-separated)
Save Edits
Cancel