Salve a tutti. Ho un problema per quanto riguarda le liste. Con questo codice in pratica chiedo quanti interi (compresi tra 0 e 7) voglio inserire e li inserisco, dopodichè li converto in binario.
Adesso essendo un numero che può variare allora ho preso in considerazione di creare delle liste. E così ho fatto, dopo aver creato la lista di tanti elementi quanti sono gli elementi da inserire, ho pensato di mettere dentro ad ogni elemento della lista un array di 3 posti in modo a memorizzarmi i bit di ogni elemento.

codice:
#include<stdio.h>
#include<stdlib.h>

struct list{
int bit[2];
struct list*next;
};

struct list list_t;

int prn_f(int bit[]);//SCHERMATA INIZIALE
struct list *create_lst(int max);//CREO UNA LISTA DI ELEMENTI TANTI QUANTI SONO I VALORI DA INSERIRE
void conv(int bit[],int max,struct list*s);//CONVERSIONE DECIMALE BINARIO
void associate(struct list*s,int bit[]);//MEMORIZZA I BIT CONVERTITI NELLA LISTA
void prn_lst(struct list*s);//STAMPA LISTA

int main(){

//FUNZIONE PER LA CREAZIONE DELLA LISTA
struct list *lst;
int bit[7];
int max=prn_f(bit);
lst=create_lst(max);
conv(bit,max,lst);
//prn_lst(lst);
}
//INPUT INIZIALE
int prn_f(int bit[]){
int n,a,i;

printf("Quanti valori vuoi inserire?\n");
	scanf("%d",&n);
	printf("Inserire valori compresi tra 0 e 7\n");
	for(i=0; i<n;i++){

scanf("%d",&a);

if(a<0||a>7){
	printf("ERROR\n");
	exit (0);
}

bit[i]=a;
}
printf("F=(X,Y,Z)=m(");
for(i=0; i<n; i++){
printf("%d",bit[i]);
if(i<n-1){
printf(",");
}
}
printf(");\n");
return n;
}

//CREAZIONE LISTA DI MAX ELEMENTI
struct list *create_lst(int max){


struct list *start,*p;

start=(struct list*)malloc(sizeof(list_t));
p=start;//CREO IL PRIMO ELEMENTO DELLA LISTA

int i;

for(i=0; i<max; i++){//CREO TANTI ELEMENTI DELLA LISTA QUANTI SONO I VALORI INSERITI
p->next=(struct list*)malloc(sizeof(list_t));
p=p->next;
}
p->next=NULL;
return start;
}

//FUNZIONE CONVERSIONE DECIMALE BINARIO
void conv(int bit[],int max,struct list*s){
int i,j;
int byte=8;
int tmp;

struct list*start,*p;
start=s;
p=start;

for(j=0; j<max; j++){
	tmp=bit[j];
	byte=4;
	for(i=0; i<3; i++){	
		if(tmp!=0||byte!=0){
		if(tmp>=byte){
			printf("1");//AL POSTO DI PRINT IL VALORE DOVRÀ ESSERE PASSATO ALL'ARRAY DELLA LISTA
			p->bit[i]=1;			
			tmp=tmp-byte;		
			byte=byte/2;
			}
		if(tmp<byte){
			printf("0");//STESSA COSA QUI	
			p->bit[i]=0;			
			byte=byte/2;
			}
		}
	p=p->next;
	}
printf("\n");
}
p=start;
prn_lst(p);
}

//STAMPA LA LISTA
void prn_lst(struct list*s){
struct list *start,*p;
printf("LA LISTA STAMPATA SARÀ\n");
start=s;
p=start;
int i;
while(p->next){
for(i=0; i<3; i++){
printf("%d",p->bit[i]);
}
printf("\n");
p=p->next;
}
}
Mi da' Segmentation fault appena lo eseguo.
Chi mi aiuta ? Grazie !