Tsoukalos Posted April 10, 2012 at 10:40 PM Report #448493 Posted April 10, 2012 at 10:40 PM 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.
pmg Posted April 10, 2012 at 10:53 PM Report #448497 Posted April 10, 2012 at 10:53 PM 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!
Tsoukalos Posted April 10, 2012 at 10:59 PM Author Report #448498 Posted April 10, 2012 at 10:59 PM 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 À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. 👍
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now