jllucca
(usa Gentoo)
Enviado em 02/09/2006 - 11:51h
Olá Lucas,
Vamos começar, primeiro o código é em C ou em C++?? Porque no código abaixo você esta misturando os dois... Vou considerar que ele era pra ser só em C.
1 #include<stdio.h>
2 #include<iostream.h>
3 #include<string.h>
4 #include<conio.h>
5 #include<malloc.h>
eu numerei os includes pra comentar que voce não precisa do 2(explico mais pra frente porque). Mas, precisa trocar o 5 pelo "stdlib.h" que deve ser o include certo do malloc.
1 void main()
2 {
3 char vnome[254], **lista, *nome, *inicio, *aux;
4 int qtde;
5 cout<<"Digite a quantidade de nomes que se deseja incluir: ";
6 cin>>qtde;
As linhas 5 e 6 devem ser trocadas pra printf e scanf. Ou, se for em C++, voce deve declarar o include "iostream"(sem o .h lá em cima que o padrão do C++), alem disso é necessario dizer que esta usando o nome de espaço std.
1 lista =(char **)(malloc(qtde+1));
2 inicio = *lista;
3 for(int i=0;i<qtde;i++)
4 {
5 printf("\n Digite %\d um nome: ",i+1);
6 gets (vnome);
7 nome =(char *)(malloc(sizeof(vnome)+1));
8 strcpy (nome,vnome);
9 *lista = nome;
10 *lista++;
11}
Essa forma de parenteses da linha 1 e 7 me confude, mas gosto é gosto... Na linha 6, no linux pelo menos tu vai ter um WARNING por tentar usar essa função.
1 inicio = *lista;
2 for(int i=0;i<qtde;i++)
3 {
4 aux = *lista;
5 cout << &aux << endl;
6 *lista++;
7 }
8 getch();
9 }
Na linha 5, se o programa esta é em C tem que trocar por printf. Se não, vale o que já falei mais pra cima. Além disso, ai tu vai escrever o endereço do ponteiro(é isso mesmo que quer?).
Na linha 6, não me recordo nunca de quem leva prioridade sobre quem. Assim, se o sistema entender "(*lista)++" voce está dizendo pra comer um caracter da string guardada. Já, se for "*(lista++)" voce está dizendo pra lista avançar um endereço pra frente e acessar o conteúdo. Assim, se voce só quer o proximo elemento da lista não precisa daquele "*" na frente.
[]'s