Copiar conteudo de string para string de uma struct linguagem c

0 respostas
D

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);
}
Criado 29 de maio de 2012
Respostas 0
Participantes 1