仅打印文件名而不是权限和日期

时间:2011-10-30 21:14:18

标签: c file-io filenames

我正在读取Unix的档案文件,我想读取文件并打印档案中的文件和文件名。例如,我需要hello.c而不是hello.c 123124123 001004002 1000 0

这是我现在的

input_fd = open(archive_name, O_RDONLY);


while( (read(input_fd, buf, BUF_SIZE)) > 0) {
    printf("%s\n", buf);
}
close(input_fd);

2 个答案:

答案 0 :(得分:2)

你在做什么对我来说似乎很奇怪,但如果你有一个C字符串(你在代码中打印buf并且它产生合理的输出)你可以尝试NUL终止它:

char *p;

if ((p = strchr(buf, ' '))
    *p = 0;
printf("%s\n", buf);

答案 1 :(得分:0)

您的代码需要多么便携?到目前为止,实现此效果的最简单方法是使用ar命令本身。要获得您想要的输出:

ar t archive

存在许多存档格式,并且仍然存在许多常用的变体(特别是AIX与“其余”有很大不同)。处理长文件名的方法有很多种。要准确读取存档,您需要能够读取标题,可能是字符串列表,跳过与定义的库符号相关的伪文件,然后处理每个文件标题并跳过文件本身,重复直到归档结束。当您阅读标题时,您需要适当地拆分它以仅隔离名称。