эта программа должна просто напечатать ввод, формат которого является выводом команды "ls". просто так.
тип ввода: drwxr-xr-x 2 персонал tommasomasaracchio 64 марта 1 2018 AnacondaProjects drwx ------ @ 7 персонал tommasomasaracchio 224 3 февраля 2019 приложения drwx ------ + 13 сотрудников tommasomasaracchio 416 6 октября, 10:15 рабочий стол drwx ------ + 21 сотрудников tommasomasaracchio 672 сент. 14 23:38 Документы
генерируют следующие ошибки Tommasos-MBP: проект tommasomasaracchio $ gcccodice.c Tommasos-MBP: проект tommasomasaracchio $ ./a.out input.txt Ошибка сегментации: 11
Я действительно не знаю, как решить и как определить, какая строка кода является проблемой. спасибо за ваше время и помощь
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct datum
{
char nome, utente, ruolo, cartella, mese;
int bo, giorni, data, ultimo_uso;
};
struct dato *leggi_file(FILE *f,int *size)
{
int i = 0;
char buf[1000];
int dim =4;
struct dato *elenco;
elenco = malloc(dim * sizeof(*elenco));
while (fgets(buf, sizeof(buf), f))
{
sscanf(buf, "%s %d %s %s %d %s %d %d %s",
&elenco[*size].nome,
&elenco[*size].bo,
&elenco[*size].utente,
&elenco[*size].ruolo,
&elenco[*size].giorni,
&elenco[*size].mese,
&elenco[*size].data,
&elenco[*size].ultimo_uso,
&elenco[*size].cartella);
size += 9;
if (i >= dim) {
dim *= 2;
elenco = realloc(elenco, dim * sizeof(*elenco));
}
}return elenco;
}
void printa_tutto(struct dato *elenco, int size)
{
int i;
for (i=0; i<size; i+= 9)
{
printf("%c %d %c %s %d %s %d %d %s\n",
elenco[i].nome,
elenco[i].bo,
elenco[i].utente,
&elenco[i].ruolo,
elenco[i].giorni,
&elenco[i].mese,
elenco[i].data,
elenco[i].ultimo_uso,
&elenco[i].cartella);
}
}
int main(int argc,const char *arcv[1])
{
FILE *f;
int size = 0;
struct dato *elenco;
f = fopen(arcv[1], "r");
elenco = leggi_file(f, &size);
printa_tutto(elenco, size);
return 0;
}