Jump to content

Inserir strings e inteiros numa lista


Recommended Posts

Posted

Consigo trabalhar bem com inteiros em listas (simples e duplas que é só o que sei), mas agora queria usar inteiros e strings ao mesmo tempo, mas devo estar a fazer alguma coisa mal pois não consigo fazer print da informação string.

Estruturas

typedef struct Info{
    int idade;
    int bi;
    char nome[N];
  }Homens, Mulheres;

typedef struct node {
    Homens        alunos;
    Mulheres       alunas; 
    struct node *next;
    struct node *prev;
} *pnode;

Funcao para inserir os dados

void insereAluno(pnode *list, pnode new){

//Algoritmos de inserção, não é cá de dentro que vem o problema
}

Input dos dados na funçao main

for(i=0;i<5;i++){
                     
    printf("\nIdade:");
    scanf("%d", &idade);
    
    printf("\nNome:");
    scanf("%s", nome);
    
    printf("\nBI:");
    scanf("%d", &bi);
  
        new=(struct node * )malloc(sizeof(struct node));
new->aluno.idade=idade;
new->aluno.bi=bi;
new->aluno.nome[N]=nome[N];
        new->next=NULL;
new->prev=NULL;
       insereAluno(&list, new);
    
    }   

Os inteiros quando os imprimo para o ecrã saem todos bem, mas as strings é que imprime para o ecrã um endereço que nunca me tinha acontecido (\jre6\lib\ext\QTJava.zip), com certeza isto deve ser um problema simples, mas já ando de roda disto há algumas horas e ainda não consegui saber o porquê da string ser listada correctamente.

Posted
	new->aluno.nome[N]=nome[N];

Nao! Isto so vai copiar um caracter. Alias esse caracter, provavelmente, nem existe: o ultimo elemento do array nome tem o indice N-1.

Usa strcpy(). Nao te esquecas do #include

#include <string.h>
strcpy(new->aluno.nome, nome);

What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Posted

Nao! Isto so vai copiar um caracter. Alias esse caracter, provavelmente, nem existe: o ultimo elemento do array nome tem o indice N-1.

Usa strcpy(). Nao te esquecas do #include

#include <string.h>
strcpy(new->aluno.nome, nome);

Já trabalhei com centenas de strcpy, não sei como me escapou este erro, que coisa estupida :wallbash:

Às vezes os erros mais insignificantes são os que dão mais trabalho  🙂

Obrigado, podem fechar o tópico, tudo o resto estava correcto e já está a funcionar, era mesmo só este pormenor/pormaior.

👍

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.