Ir para conteúdo
Fórum Script Brasil
  • 0

[Ajuda] Problema em passagem de ponteiros


Madaagnol

Pergunta

Estou fazendo um trabalho em C e eventualmente o programa crasha sem motivo aparente, já cheguei até perguntar pra professora do curso que também não soube o que estava acontecendo  então fiz um protótipo de como estou fazendo que também esta apresentando o mesmo erro :

#include <stdio.h>
#include <conio.h>
struct Teste
{
     char nome[100];
};
typedef struct Teste teste[100];

void fun_teste(teste *testando,int *tam);

void fun_mostra(teste *teste_mostrando,int *tam);

int main ()
{
     teste teste_main;
     int tam=0;
 
     fun_teste(&teste_main,&tam);
}

void fun_teste(teste *testando,int *tam)
{
     do
     { 
             fflush(stdin);
             printf("Complete com um nome: ");
             gets(testando[*tam]->nome); 
             (*tam) = (*tam) + 1;
     }while(*tam<5);
 
      fun_mostra(&(*testando),&(*tam));
}

void fun_mostra(teste *teste_mostrando,int *tam)
{
    int i;
 
    for(i=0;i<*tam;i++)
    {
     puts(teste_mostrando[*tam]->nome);
    }
 
    getch();
}

 

Fiz uma struct que é chamada em vetor e passado para o main, que é passada para o fun_teste, ele compila certinho mas quando executo ele, ele salva a primeira e segunda vez mas na terceira ele trava;

 

Se alguém puder me ajudar, podem editar como for melhor para passar o vetor ou como melhorar essas passagem, fiquem a vontade!

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

p q você usa getch para pausar o programa? >_<

Basicamente seu erros são 2.
1º Nas funçoes você ta esperando um array de Testes, mas em main você não declarou nenum:
isso é um "ÚNICO" teste -> teste teste_main;
e isso é um array de 5 testes-> teste teste_main[5];

2º  dentro de fun_mostra
trocar esta linha: puts ( teste_mostrando[*tam]->nome );
por esta outra: puts ( teste_mostrando->nome );

você ta usando o valor de tam como índice porem o índice é o i

 

Considere deixar de usar conio para o resto da sua vida hahah. Quando aprendi a programar meu sensei me falou que é um disparate você adicionar uma biblioteca para simplesmente pausar o programa, você pode perfeitamente usar getchar que já está na biblioteca stdio.h, você não precisa de quetch nem conio. Lembre que somos programadores de C, e C==eficiência. ;)

Poderia lhe dizer que não usasse o fflush(stdin) nunca mais também, mas certamente não lhe interessa não? Ou sim? http://forum.imasters.com.br/topic/336835-tutorial-systempause-e-fflushstdin/


...Deveria lhe interessar. >_<

Editado por vangodp
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...