d_reclen aus der struct dirent
-
Hallo
Ich habe folgendes Problem. Ich lese aus der d_reclen einen Wert heraus. d_namlen soll ja die aktuelle Länge des Eintrags in d_name ohne das Stringendezeichen angeben. Führe ich folgenden Code aus, erhalte ich nicht nachvollziehbare Angaben.
I_Hilfe = dirzeiger ->d_reclen; if (S_ISDIR(attribut.st_mode)) { printf ("\n Pfad: %s Anzahl %d" ,S_Pfad, I_Hilfe);
Im home Ordner liegen drei weitere Verzeichnisse: kontofakrr, istest und lost+found.
Bei der Ausführung Code gibt printf folgendes aus.
Pfad: /home/kontofakrr Anzahl 32
Pfad: /home/lost+found Anzahl 32
Pfad: /home/.. Anzahl 24
Pfad: /home/istest Anzahl 32
Pfad: /home/. Anzahl 24Die Angabe d_reclen geben nicht die wahren längen der Stringketten an. Wo liegt denn da der Denkfehler.
-
d_reclen gibt nicht die Länge des Namens an, sondern (siehe man: readdir(3)) "length of this record". Also die Länge des gesamten dirent-Eintrags. Die Länge des Namens bekommst du mit strlen bzw. dem Macro _D_EXACT_NAMLEN.
PS. S_Pfad und I_Hilfe sind aber sehr merkwürdige Variablennamen