Als Teil einer Zuweisung von einem meiner Klassen implementieren, ich habe ein Programm in C schreiben, um die Ergebnisse des ls -al Befehl zu duplizieren. Ich habe die notwendigen Materialien gelesen, aber ich bekomme immer noch nicht die richtige Ausgabe. Hier ist mein Code so weit, seine nur angeblich aus der Dateigröße drucken und die Dateinamen, aber die Dateigrößen ihr Druck ist nicht korrekt.die ls -al Befehl in C
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);
}
Das sind meine Ergebnisse nach der Ausführung des Codes:
[[email protected] ~]# ./a.out Downloads
4096 ..
4096 hw22.c
4096 ankur.txt
4096 .
4096 destination.txt
Hier sind die richtigen Größen:
[[email protected] ~]# 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
Kann jemand bitte meinen Fehler hinweisen.
Danke,
Ankur
Funktioniert in Ordnung für mich. Überprüfen Sie den Rückgabewert von stat(), um festzustellen, ob ein Fehler vorliegt. – Neal
Funktioniert auch hier gut. Führen Sie Fehlerprüfungen für alles ein (opendir(), readdir(), stat()). –
Funktioniert gut, wenn Sie es auf '.' Ausführen, aber nicht, wenn Sie es ein anderes Verzeichnis geben. –