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