gpt4 book ai didi

c - 为什么 write(fileno(stdout)) 不能与 ent->d_name 一起使用?

转载 作者:行者123 更新时间:2023-11-30 18:51:28 25 4
gpt4 key购买 nike

使用write()系统调用打印目录列表时遇到一些问题。我需要在不使用 printffprintf(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;
}

这是我的输出(mac os/Users/文件夹):

...!("((
.localized"(∞R Shared∞R €€€(vackdaled..!("((
.localized"(∞R Shared∞R €€€(vackdaled.localized"(∞R Shared∞R €€€(vackdaledShared∞R €€€(vackdaledvackdaled

但是如果我使用printf函数,结果是这样的:

. 
..
.localized
Shared
vackdale

最佳答案

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

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

关于c - 为什么 write(fileno(stdout)) 不能与 ent->d_name 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36676057/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com