我正在尝试编写一个程序来从 Unix 打开存档文件,读取文件并打印存档中的文件以及文件名。下面是我的代码——它可以编译,但我在终端中得到了一些奇怪的输出——例如?;?U?。它应该只显示 2 个 txt 文件名。有人可以看看我的代码并就我所缺少的内容给我一些指导吗?谢谢!
编辑:我对我的代码进行了一些更改,但它仍然无法正常工作。非常感谢任何建议或帮助。
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <errno.h>
#include <sys/utsname.h>
#include <ctype.h>
#include <string.h>
#include <ar.h>
int main (int argc, char **argv)
{
int input_fd;
//char buffer[25];
struct ar_hdr my_ar;
if (argc != 2) {
printf("Error", argv[0]);
exit(EXIT_FAILURE);
}
//open the archive file (e.g., hw.a)
input_fd = open(argv[1], O_RDONLY);
if (input_fd == -1)
{
perror("Can't open input file\n");
exit(-1);
}
while (read(input_fd, my_ar.ar_name, sizeof(buffer)) > 0) {
printf("%s\n", my_ar.ar_name);
}
close(input_fd);
return 0;
}