Ir ao conteúdo
  • Cadastre-se

Problema em passar string em Lista ENcadeada


EmersonVNI

Posts recomendados

Boa noite, precisoda ajuda do pessoal aqui, por favor, alguem conseguiria encontrar a solução do meu seguinte problema, 
Abaixo segue todo o codigo do meu trabalho... e o problema e o seguinte, meu trabalho contem uma Main.c, uma cliente.c e uma fornecedor.c o problema e igualmente aplicado na cliente.c e fornecedor.c, o que acontece e que quando eu tento inserir meus dados por scanf, a função esta substituindo os valores, porém quando passo de forma estatica, ocorre normalmente, o codigo segue abaixo, alguém poderia verificar e me retornar uma solução por favor T.T 

Main.c

#include <stdio.h>#include <stdlib.h>#include <string.h>#include "fornecedor.h"#include "cliente.h"void main(){FornecedorL* f;int escolha,cf=-1,cc=-1,n;char *nome = (malloc(sizeof(nome))),*descs = (malloc(sizeof(descs)));ClienteL* cliente;char* z ="coisas coisas";char* d ="lol";criarLista1(&cliente);criarListaForn(&f);do{printf("-------------MENU------------\n1 - Cadastrar novo c\n2 - Remover c\n3 - Imprimir c(s)\n4 - Buscar um c\n");printf("5 - Cadastrar novo fornecedor\n6 - Remover fornecedor\n7 - Imprimir fornecedor(es)\n8 - Editar descricao de produtos de fornecedor\n");printf("9 - Sair\n");printf("Escolha uma opcao: ");scanf("%d", &escolha );switch (escolha) {case 1:cc++;inserirElementOrdenado(&cliente, z,cc);cc++;inserirElementOrdenado(&cliente, d,cc);cc++;inserirElementOrdenado(&cliente, z,cc);cc++;inserirElementOrdenado(&cliente, "ajingles", cc);cc++;inserirElementOrdenado(&cliente, "rafael",cc);break;case 2:removerElemento(d, &cliente);break;case 3:imprimeListaRec(&cliente);getch();break;case 4:buscaListaRec(&cliente, "jingles");break;case 5:printf("Insira o nome do fornecedor: ");scanf(" %s", nome);printf("Insira  descricao: ");scanf(" %s", descs);cf++;inserirFornecedor(&f,nome,cf,descs);getch();break;case 6:printf("Qual elemento deseja remover: ");scanf("%d", &n);removerElementoForn(n, &f);break;case 7:imprimeForn(&f);getch();break;case 8:printf("Qual elemento deseja editar: ");scanf("%d", &n);printf("Insira a edicao");scanf(" %s", descs);editaProdForn(&f, n, descs);break;}system("CLS");}while(escolha!=9);liberaLista(&cliente);liberaListaForn(&f);getch();}

Fornecedor.c

#include <stdio.h>#include <stdlib.h>#include <conio.h>#include <windows.h>#include <math.h>#include <string.h>typedef struct fornecedor{int id;char* nome;char* desc;struct fornecedor* prox;}FornecedorL;void criarListaForn (FornecedorL** l){	*l = NULL;}void inserirFornecedor (FornecedorL** l, char *v,int ids,char *d){FornecedorL* n= malloc(sizeof(FornecedorL));n->id=0;	if(n!=NULL){	 n->nome=v;	 n->desc=d;	  n->id=ids;	 n->prox =*l;   	 *l=n;    		 }else{	 printf("espaco nao alocado com sucesso");	 }	 } /*void insereOrdenadoForn(FornecedorL** l,char *v,int ids, char *descs){	FornecedorL* p,*ant = NULL;		for(p = *l;((p != NULL) && (p->id< ids));p = p->prox)		ant = p;	FornecedorL* n = malloc(sizeof(FornecedorL));	n->nome = v;	n->id = ids;	n->desc = descs;	if(ant == NULL){		n->prox = *l;		*l = n;			}else{		n->prox = p;		ant->prox = n;				}else{		printf("espaço não alocado!");			}}*/int numeroForn(FornecedorL** l){	FornecedorL *p;	int i = 0;	for(p = *l;p != NULL; p = p->prox){		i++;	}	return i;	}	int estaVaziaForn (FornecedorL** l){	if(*l== NULL){		return 1;		}else{		return 0;		}}/*void imprimeListaRecForn (FornecedorL** l){	if(!estaVaziaForn(l)){	   imprimeListaRec(&(*l)->prox);		 printf("%d - %s : %s \n", (*l)->id, (*l)->nome, (*l)->desc );			}}*/void imprimeForn(FornecedorL** l){	if(estaVaziaForn(l)){		printf("Lista Vazia!!");	}else{		FornecedorL* p;		for(p = *l;p != NULL;p = p->prox){			printf("%d - %s : %s \n",p->id, p->nome, p->desc);		}	}}FornecedorL* buscaForn(FornecedorL** l, int v){	FornecedorL* p;	for(p = *l;p != NULL;p = p->prox){	if(p->id == v){			printf("%i - %s : %s \n ",p->id, p->nome, p->desc);			return p;		}	}	return NULL;}	FornecedorL* editaProdForn(FornecedorL** l, int v,char d[]){	FornecedorL* p;	for(p = *l;p != NULL;p = p->prox){	if(p->id == v){			p->desc = d;			return p;		}	}	return NULL;}	void removerElementoForn (int d, FornecedorL** l){	FornecedorL *p, *ant= NULL;		for(p=*l; p!=NULL && p->id != d;p=p->prox)		ant = p;		if(p==NULL)		  printf("Elemento nao encontrado");		  else{				if(ant==NULL)				*l=p->prox;					else					ant->prox=p->prox;		 free(p);		  			}		}			void liberaListaForn(FornecedorL** l){	FornecedorL* p=*l;	while(p!=NULL){		FornecedorL* temp = p->prox;		free(p);		p=temp;	}	*l = NULL;}
#include <stdio.h>#include <stdlib.h>#include <conio.h>#include <math.h>#include <string.h>typedef struct cliente{int id;char* nome;struct cliente* prox;}ClienteL;void criarLista1 (ClienteL** l){	*l = NULL;}void inserirElemento (ClienteL** l,char v[],  int c){ClienteL* n= malloc(sizeof(ClienteL));n->id=0;	if(n!=NULL){	 n->nome=v;	 n->prox =*l;   	n->id=c;	*l=n;    		 }else{	 printf("espaco nao alocado com sucesso");	 }	 }void inserirElementOrdenado (ClienteL** l, char *v, int ids){ClienteL* p, *ant= NULL;ClienteL* n= malloc(sizeof(ClienteL));		if(n!=NULL){		for(p=*l;(( p!=NULL) && (strcmp(p->nome,v) <0));p=p->prox)		ant = p;		 n->nome=v;	 n->id = ids;  			if(ant ==NULL){			n->prox =*l;			*l=n;			}else{			n->prox = p;			ant->prox =n;			}	}else{	printf("espaco nao alocado com sucesso");	 }}int numero(ClienteL** l){	ClienteL *p;	int i = 0;	for(p = *l;p != NULL; p = p->prox)   i++;					return i;	}int estaVazia (ClienteL** l){	if(*l== NULL){		return 1;		}else{		return 0;		}//return(*l==NULL);}void imprimeListaRec (ClienteL** l){	if(!estaVazia(l)){	   imprimeListaRec(&(*l)->prox);		 printf("%d - %s \n", (*l)->id, (*l)->nome );			}}/*void imprimeListaRec(ClienteL** l) {if(*l!=NULL) {ClienteL* p;for( p = *l ; p!=NULL; p=p->prox)printf("%s", p->nome[30]);} else {printf("Listavazia!");}}*/ClienteL* buscaListaRec (ClienteL** l, char v[]){		if(!estaVazia(l)){		if(!strcmp((*l)->nome,v))		 printf("%d - %s \n", (*l)->id, (*l)->nome );        buscaListaRec(&(*l)->prox, v);								return *l;		}		return NULL;	}	void removerElemento (char v[], ClienteL** l){	ClienteL *p, *ant= NULL;		for(p=*l; p!=NULL && strcmp(p->nome,v);p=p->prox)		ant = p;		if(p==NULL)		  printf("Elemento nao encontrado");		  else{				if(ant==NULL)				*l=p->prox;					else					ant->prox=p->prox;		 free(p);		  			}		}			void liberaLista(ClienteL** l){ClienteL* p=*l;while(p!=NULL){ClienteL* temp = p->prox;free(p); p=temp;}*l = NULL;}		
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!