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;
}