Ir ao conteúdo
  • Cadastre-se

Erro em exercício em C


Maickon

Posts recomendados

Ae pessoal, boa tarde a todos! Estou aprendendo Struct em C e em uma linha de um exercício aparece o seguinte erro: "TWO OR MORE DATA TYPES IN DECLARATION OF FICHA" que eu nao estou entendendo, alguém pode me ajudar? Vou deixar o código abaixo:

#include <stdio.h>
#include <stdlib.h>

int main()
{
struct Dados_Pessoais{
char nome_completo[50];
char nascimento[10];
char cidade[15];
int RG;
int CPF;
}

struct Dados_Curso{
char faculdade[40];
char curso[25];
int periodo;
}

struct ficha_de_inscricao{
struct Dados_Pessoais Dados;
struct Dados_Curso Curso;
}

struct ficha_de_inscricao Ficha; [B]/*O ERRO ESTÁ NESSA LINHA*/[/B]

printf("DADOS PESSOAIS:\n");

printf("Digite seu nome completo:\n");
gets(Ficha.Dados.nome_completo);
printf("Digite sua data de nascimento separada com barras:\n");
scanf("%s", Ficha.Dados.nascimento);
printf("Digite sua Cidade:\n");
scanf("%s", Ficha.Dados.cidade);
printf("Digite o numero de seu RG:\n");
scanf("%d", &Ficha.Dados.RG);
printf("Digite o numero de seu CPF:\n");
scanf("%d", &Ficha.Dados.CPF);

printf("DADOS DO CURSO:\n");

printf("Digite o nome de sua Universidade:\n");
gets(Ficha.Curso.faculdade);
printf("Digite a formação Academica:\n");
gets(Ficha.Curso.curso);
printf("Digite o periodo que esta cursando:\n");
scanf("%d", &Ficha.Curso.periodo);

printf("\n\n");

printf("CADASTRO FEITO COM SUCESSO!\n");

printf("NOME: %s\nDATA DE NASCIMENTO: %s\nCIDADE: %s\nRG: %d\nCPF: %d\n\n",Ficha.Dados.nome_completo,Ficha.Dados.nascimento,Ficha.Dados.cidade,Ficha.Dados.RG,Ficha.Dados.CPF);
printf("UNIVERSIDADE: %s\nCURSO: %s\nPERIODO: %d\n",Ficha.Curso.faculdade,Ficha.Curso.curso,Ficha.Curso.periodo);

return 0;
}

O erro está na seguinte linha: struct ficha_de_inscricao Ficha;

onde diz: error: two or more data types in declaration of `Ficha'

Ae pessoal encontrei o erro estava esquecendo de usar o ';' no final das estruturas, agora ficou assim struct Dados_Pessoais{...}; e struct Dados_Curso{...};, esse problema foi resolvido, mas criou-se outro, o programa não le a linha gets(Ficha.Curso.faculdade);, ele imprime a linha printf("Digite o nome de sua Universidade:\n"); e depois já pula para printf("Digite a formação Academica:\n");, não da pra enviar o nome da universidade, alguém pode me ajudar nisso?

Link para o comentário
Compartilhar em outros sites

O problema é que após a entrada de dados nos scanf, fica um lixo no buffer do teclado, e no caso, o gets pega exatamente esse lixo. A opção mais simples é repetir o gets que "passa direto":

...
printf("Digite o nome de sua Universidade:\n");
gets(Ficha.Curso.faculdade);
gets(Ficha.Curso.faculdade);
printf("Digite a formação Academica:\n");
gets(Ficha.Curso.curso);
...

Assim, o primeiro gets receberá o lixo e o segundo receberá os dados.

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para 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...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!