Ola pessoal alguem poderia me ajudar , não sei onde estou errando, quero copiar o conteúdo de uma string para dentro da string do meu struct mas da falha na segmentação ao compilar, o problema que falo esta nas linhas 48 e 49. desde já grato pela ajuda pessoal.
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct cel {
char* max;
struct cel *prox;
};
typedef struct cel celula;
void remover (celula *p);
void imprima (celula *ini);
void insere (char* x, celula *p);
int num = 0;
int contido(char* termo,char* inter);
//------------------------------------------------------------------------------
void main(int argc, char** argv){
celula maxcubo;
celula *ini;
maxcubo.max = "DDK";
maxcubo.prox = NULL;
ini = &maxcubo;
num = strlen(argv[1]);
int i , ii, iii, iv = 0;
int tcubo = 1;int difere = 0;
celula* q;
char* tmp;
char **temp = (char**) malloc ( 1 * sizeof (char *));
temp[0] = malloc( num * sizeof (char));
for( i = 0; i < num; i++)
temp[0][i] = 'X';
insere(temp[0],ini);
free (temp);
for( i = 1; i < argc; i++ ){// maxtermos
for ( q = ini -> prox; q != NULL; q = q->prox){// intervalos
if(contido(argv[i],q->max) == 1){
for( ii = 0; ii < num; ii++)
{
if( argv[i][ii] != q->max[ii] )
{
if(argv[i][ii] == '0' && q -> max[ii] == 'X' ){ strcpy(tmp , (q -> max) ); tmp[ii] = '1'; insere(tmp,ini); }
if(argv[i][ii] == '1' && q -> max[ii] == 'X' ){ strcpy(tmp , (q -> max) ); tmp[ii] = '0'; insere(tmp,ini); }
}
printf("%s\n",q->max);
}
}//contido
}// intervalos
}// maxtermos
}
//------------------------------------------------------------------------------
int contido(char* termo,char* inter){
int k,count = 0;
for( k = 0; k < num; k++ ){
if( (termo[k] == '0' || termo[k] == '1') && inter[k] == 'X' )count++;
if( termo[k] == '0' && inter[k] == '0')count++;
if( termo[k] == '1' && inter[k] == '1')count++;
}
if( count == num )return 1;
else return 0;
}
//------------------------------------------------------------------------------
void imprima (celula *ini)
{
celula *p;
for (p = ini -> prox; p != NULL; p = p->prox)
printf ("%s\n", p -> max );
}
//------------------------------------------------------------------------------
void insere (char* x, celula *p)
{
celula *nova;
nova = malloc (sizeof (celula));
nova->max = x;
nova->prox = p->prox;
p->prox = nova;
}
//------------------------------------------------------------------------------
void remover (celula *p)
{
celula *morta;
morta = p->prox;
p->prox = morta->prox;
free (morta);
}