Ir ao conteúdo
  • Cadastre-se

Problema em trabalho de Lista/struct/ponteiros em C


Posts recomendados

Beleza galera? Então, estou fazendo um trabalho cujo meu objetivo é pensar em algum problema que seja resolvido com uma lista de structs. No código a seguir vocês podem perceber que minha struct armazena somente dois dados, peso e nome. Meu problema está surgindo na parte de armazenar e/ou mostrar o nome armazenado... Quando peço para ver o nome armazenado só mostra alguns simbolos... Alguem sabe o que está errado? Desde já, agradeço imensamente! Segue o código: 

Obs: Para a entrada do nome estou usando o scanf("%s", &x) só para testes. Quando estiver funcionando passarei para o gets.

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

struct lista{
    char nome[30];
    float peso;
    struct lista *proximo;
};

typedef struct lista slista;


slista *inserir_inicio(slista *inicio, char x[30], float y){
    slista *novo;
    novo=(slista *) malloc(sizeof (slista));
    novo->nome[30]=x[30];
    novo->peso=y;
    novo->proximo=inicio;
    return novo;
}

void imprimir(slista *inicio, char x[30]){
    slista *aux=inicio;
    while (aux->nome!=x){
        aux=aux->proximo;
    }
    printf("\nNome: %c", aux->nome);
    printf("\nPeso: %f", aux->peso);
}

void imprime(slista *inicio){
    slista *aux= inicio;
    while (aux!=NULL){
        printf("\n%s", aux->nome);
        printf("\n%f\n", aux->peso);
        aux=aux->proximo;
    }
}
int main(){
    slista *inicio=NULL;
    int menu;
    float y;
    char x[30];
    do{
        system("cls");
        printf("\n\t\t****MENU****\n");
        printf("\n1. Insercao de um novo elemento no inicio da lista");
        printf("\n2. Impressao de um elemento da lista");
        printf("\n3. Impressao de todos os elementos da lista");
        printf("\n4. Exclusao do primeiro elemento da lista");
        printf("\n4. Exclusao de toda a lista");
        printf("\n5. Sair");
        printf("\nOpcao: ");
        scanf("%i", &menu);
        if (menu==1){
            printf("\nDigite o nome: ");
            scanf("%s", &x);
            printf("\nDigite o peso: ");
            scanf("%f", &y);
            inicio=inserir_inicio(inicio,x,y);
            printf("\nInserido com sucesso! ");
            system("pause");
        }
        else if (menu==2){
            printf("\nDigite o nome de quem devera ser impresso: ");
            scanf("%s", &x);
            imprimir(inicio, x);
            system("pause");
        }
        else if (menu==3){
            imprime(inicio);
            system("pause");
        }
        else if (menu==5) return 0;
        
        else {
            printf("\nOpcao incorreta! ");
            system("pause");
        }
    }while (1);
    return 0;
}

 

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!