Я пытаюсь разобрать заголовки файла Linux ar. Я использую структуру ar_hdr из файла ar.h для хранения данных заголовка. Я начал с малого, просто разбирая архив с помощью одного простого текстового файла и назначая данные заголовка массивам struct char.Чтение текстового файла переменной переполнения переменной?
void conciseTable(char *path)
{
int fd, r, pos;
struct ar_hdr header[20];
//Open the file
fd = open(path, O_RDONLY);
if (fd == -1){
perror("Error opening file");
exit(-1);
}
// seek to end of ARMAG
pos = lseek(fd, SARMAG, SEEK_SET);
r = read(fd, header[1].ar_name, 16);
r = read(fd, header[1].ar_date, 12);
r = read(fd, header[1].ar_uid, 6);
r = read(fd, header[1].ar_gid, 6);
r = read(fd, header[1].ar_mode, 8);
r = read(fd, header[1].ar_size, 10);
printf("%s\n", header[1].ar_name);
printf("%s\n", header[1].ar_date);
printf("%s\n", header[1].ar_uid);
printf("%s\n", header[1].ar_gid);
printf("%s\n", header[1].ar_mode);
printf("%s\n", header[1].ar_size);
close(fd);
}
Файл ар выглядит следующим образом:
!<arch>
1-s.txt/ 1390594295 50389 13361 100640 41 `
1111111111111111111111111111111111111111
Когда я бегу, я получаю следующий результат:
1-s.txt/ 1390594295 50389 13361 100640 41
1390594295 50389 13361 100640 41
50389 13361 100640 41
13361 100640 41
100640 41
41
Похоже, что массивы Переполненная друг в друга и Я не могу понять, как остановить это.
Это link на странице руководителя ar.h, если это помогает.
Спасибо, Мариан. Я добавил '/ 0' к последнему элементу каждого из них, и это сделало трюк. – Tanner