Ir ao conteúdo
  • Cadastre-se

C Compila e para no meio


Drigs

Posts recomendados

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

typedef struct futebol{
    char nome[100];
    int idade;
    int jogos;
    int gols;
}t_futebol;

t_futebol jogador;

int main(){
    strcpy(jogador.nome, "\0");
    jogador.idade = 0;
    jogador.jogos = 0;
    jogador.gols = 0;
    
    printf("O nome do jogador: ");
    scanf("[^\n]", jogador.nome);
    
    printf("A idade do jogador: "); 
    scanf("%d", &jogador.idade);
    
    printf("Numero de jogos do jogador: ");
    scanf("%d", &jogador.jogos);
    
    printf("Numero de gols do jogador: ");
    scanf("%d", &jogador.gols);
    
    return 0;
}

 

Executa apenas o jogador.nome e código acaba, alguém sabe o porque?

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Sobre:

1 hora atrás, Drigs disse:

scanf("[^\n]", jogador.nome);

 

Acho que faltou o "%", algo como:

scanf("%[^\n]", jogador.nome);

 

adicionado 1 minuto depois
7 minutos atrás, Math.Pi disse:

O que é isso? "[^\n]"

 

Eu não lembro, mas acho que serve para fazer aceitar espaços no texto, ou seja, passa a ler até identificar um \n (ENTER).

adicionado 4 minutos depois

@Drigs, sobre  a definição do tipo, sugeriria algo assim:
 

typedef struct _Jogador{
    char nome[100];
    int  idade;
    int  jogos;
    int  gols;
} Jogador;

Jogador jogador;

Ou seja, o tipo em si sem o "_", e usando uma nomenclatura mais coerente com a variável em si.

adicionado 7 minutos depois

Se for criar um vetor, poderia fica no plural, ex.:

Jogador jogadores[5];

Por ai vai...

  • Curtir 1
  • Amei 1
Link para o comentário
Compartilhar em outros sites

9 horas atrás, Simon Viegas disse:

Acho que faltou o "%", algo como:


scanf("%[^\n]", jogador.nome);

Exato. Esse é o erro. 

Só q ficaria mais adequado p  o exercíco se jogador fosse um vetor, para poder acessar os dados da struct por meio dos índices do mesmo 

Link para o comentário
Compartilhar em outros sites

11 horas atrás, Drigs disse:

typedef struct futebol{

        char nome[100];

        int idade;

        int jogos;

        int gols; 

t_futebol;

E tem mais, não precisa declara dois nomes diferentes para mesma coisa, se não vai usá-los (Já fiz muito isso).

 

Podemos usar um só nome e ter com isso mais consistência no código-fonte.

typedef struct Jogador Jogador;
struct Jogador {
  char nome[47];
  int  idade;
  int  jogos;
  int  gols;
};

 

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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