Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Drigs

C Compila e para no meio

Recommended Posts

Postado (editado)
#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?

Editado por Simon Viegas
Inserir tag CODE

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
Postado (editado)
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 

Editado por giu_d
corrigir comentário
  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
Postado (editado)
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;
};

 

Editado por AnsiC
  • 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






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

×