C 为什么write(fileno(stdout))不';t使用ent->;你叫什么名字?

C 为什么write(fileno(stdout))不';t使用ent->;你叫什么名字?,c,macos,C,Macos,使用write()syscall打印目录列表时遇到一些问题。我需要在不使用printf或fprintf(stdout)的情况下打印此文件。这是我的密码: #include <dirent.h> #include <stdio.h> int main (void) { DIR *dir; struct dirent *ent; char directory[256] = "/Users"; dir = opendir(directory);

使用
write()
syscall打印目录列表时遇到一些问题。我需要在不使用
printf
fprintf(stdout)
的情况下打印此文件。这是我的密码:

#include <dirent.h>
#include <stdio.h>

int main (void) {
    DIR *dir;
    struct dirent *ent;
    char directory[256] = "/Users";
    dir = opendir(directory);

    while (ent=readdir(dir)) {
        write(fileno(stdout), ent->d_name, sizeof(ent->d_name));
    }
    closedir(dir);
    return 0;
}
但是如果我使用
printf
函数,结果如下:

. 
.. 
.localized 
Shared 
vackdale 

您需要将字符串的长度传递给write函数,而不是传递缓冲区的大小

尝试
strlen(ent->d_name)
代替
sizeof(ent->d_name)

. 
.. 
.localized 
Shared 
vackdale