Ir ao conteúdo
  • Cadastre-se
Drigs

C Compila e para no meio

Recommended Posts

#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?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Algo de errado na leitura do nome do jogador.

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites
Visitante
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 

  • Obrigado 1

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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

×