Ir ao conteúdo

Posts recomendados

Postado

Olá pessoal!

Estou com um probleminha, que aparentemente é barbada, mais acreditem, passei algumas horas já quebranco a cabeça e gostaria de uma segunda opinião sobre meu codigo. Sou novo em C++.

É o seguinte, eu tenho que fazer um vetor de struct dinamico, inserir os dados e depois exibi-los.

segue abaixo os trexos do codigo que importam:

 

Spoiler

 

struct agenda
{
       char horario[10];
       char data[10];
       char compromisso[50];
}; 

 

struct agenda *ptr;
    int i, tam = 2;    
    
    ptr = (struct agenda*) malloc(sizeof(struct agenda*)*tam);
    
    for ( i = 0; i < tam; i++)
    {
        
        printf("\n Digite o horario do compromisso no formato HH:MM:SS: ");
        gets(ptr[ i ].horario);
        printf("\n Digite a data do compromisso no formato DD/MM/YYYY: ");
        gets(ptr[ i ].data);
        printf("\n Digite qual o compromisso: ");
        gets(ptr[ i ].compromisso);
    }

 

for ( i = 0; i < tam; i++)
    {
        printf("\n Compromisso %d" , i+1);
        printf("\n");
        printf("\n Horario: %s", ptr[ i ].horario);
        printf("\n Data: %s", ptr[ i ].data);
        printf("\n Compromisso: %s", ptr[ i ].compromisso);
        printf("\n ----------------------------");    
    }

 

 

Só que o output está saindo todo errado:

 

Spoiler

 

 Digite o horario do compromisso no formato HH:MM:SS: 10:00

 Digite a data do compromisso no formato DD/MM/YYYY: 10/10/2016

 Digite qual o compromisso: Consulta medica.

 Digite o horario do compromisso no formato HH:MM:SS: 13:00

 Digite a data do compromisso no formato DD/MM/YYYY: 13/09/2016

 Digite qual o compromisso: Levar cachorro no veterinario.

 ----------------------------
 Compromisso 1

 Horario: 10:00
 Data: 10/10/2016Consulta medica.
 Compromisso: Consulta medica.
 ----------------------------
 Compromisso 2

 Horario: 13:00
 Data: 13/09/2016Levar cachorro
 Data: 13/09/2016Levar cachorro
 Data: 13/09/2016Levar
 Compromisso: Levar cachorro
 Compromisso: Levar cachorro
 Compromisso: Levar cachorro
 Compromisso: Levar cachorro
 ----------------------------

 


Será que o problema ´o jeito que estou lendo e gravando os string ou no modo como estou exibindo ?

 

Obrigado!

Postado

@geissler Tenta fazer assim:

 ptr = (struct agenda*) malloc(tam * sizeof(struct agenda));

 

Postado
53 minutos atrás, CiroboyBR disse:

@geissler Tenta fazer assim:


 ptr = (struct agenda*) malloc(tam * sizeof(struct agenda));

 

Cara valeu, nunca ía pensar nisso,

Está quase, só que o output fica assim:

 


 Digite o horario do compromisso no formato HH:MM:SS: 10:30:00

 Digite a data do compromisso no formato DD/MM/YYYY: 10/10/2016

 Digite qual o compromisso: Consulta medica.

 ----------------------------
 Compromisso 1

 Horario: 10:30:00
 Data: 10/10/Consulta medica.
 Compromisso: Consulta medica. 
 ----------------------------

 

Quando eu exibo a data, ele sempre joga junto o campo compromisso.

 

O problema eu acho que está aqui: gets(ptr[ i ].data);

 

Como eu coloco "/" no meio, de algum modo ele se perde. Se eu digitar só 10102016 ao invés de 10/10/2016 ele funciona certinho.

 

Postado

@geissler Isso é porque seu char é pequeno, você está tentando enfiar 10 caracteres em um char[10], sendo que um char[10] só cabem 9 caracteres, pois o ultimo caractere é reservado para o '\0' (fim da string).

Isso deve resolver:

 struct agenda
{
       char horario[10];
       char data[11]; 
       char compromisso[50];
};

 

Postado
6 horas atrás, CiroboyBR disse:

@geissler Isso é porque seu char é pequeno, você está tentando enfiar 10 caracteres em um char[10], sendo que um char[10] só cabem 9 caracteres, pois o ultimo caractere é reservado para o '\0' (fim da string).

Isso deve resolver:


 struct agenda
{
       char horario[10];
       char data[11]; 
       char compromisso[50];
};

 

Cara tu matou a charada.

 

Muito obrigado!

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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!