Ir ao conteúdo
  • Cadastre-se
Ricardo Negreiros

Problemas com 'char'

Recommended Posts

Tira os & que estão antes do nomes das variáveis "nome" e "sobrenome".

 

O comando scanf recebe ponteiros como parâmetros, ou seja, ele quer que você aponte em que lugar da memória ele deve guardar as informações que a pessoa digitar. Quando você usa o símbolo & antes do nome da variável, é retornado o ponteiro dá variável (que aponta/indica em que lugar da memória devem ser armazenados valores atribuídos a esta variável), ao invés de retornar o valor da variável.

 

Em C uma string é um vetor de chars, portanto essa variável contém ponteiros que apontam para cada char, logo quando você dá apenas o nome da variável (ou seja sem especificar uma posição [n] do vetor), ela retorna os ponteiros que apontam para cada char onde será guardada cada letra digitada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tira os & que estão antes do nomes das variáveis "nome" e "sobrenome".

 

O comando scanf recebe ponteiros como parâmetros, ou seja, ele quer que você aponte em que lugar da memória ele deve guardar as informações que a pessoa digitar. Quando você usa o símbolo & antes do nome da variável, é retornado o ponteiro dá variável (que aponta/indica em que lugar da memória devem ser armazenados valores atribuídos a esta variável), ao invés de retornar o valor da variável.

 

Em C uma string é um vetor de chars, portanto essa variável contém ponteiros que apontam para cada char, logo quando você dá apenas o nome da variável (ou seja sem especificar uma posição [n] do vetor), ela retorna os ponteiros que apontam para cada char onde será guardada cada letra digitada.

O problema persiste...

post-718273-0-86089000-1395926935_thumb.

post-718273-0-22129400-1395927017_thumb.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pode nos disponibilizar o código fonte deste programa que você fez?


Tenho até uma sugestão...

Limpe o buffer entre os dois scanf quando pede nome e sobrenome. Quando você digita o nome e pressiona o enter, provavelmente está armazendo o caracter enter em sobrenome. Por isto a saída pode estar dando vazio.

Insere este código depois da leitura do nome:

fflush(stdin); 

Compartilhar este post


Link para o post
Compartilhar em outros sites
Visitante

 

Pode nos disponibilizar o código fonte deste programa que você fez?

Tenho até uma sugestão...

Limpe o buffer entre os dois scanf quando pede nome e sobrenome. Quando você digita o nome e pressiona o enter, provavelmente está armazendo o caracter enter em sobrenome. Por isto a saída pode estar dando vazio.

Insere este código depois da leitura do nome:

fflush(stdin); 

 

Apesar de funcionar o fflush... tem um comportamento indefinido !

 

obs: fflush(stdin) não é recomendado, no documento da função está escrito: "effect undefined for input streams".

Uma opção seria usar operador de supressão no scanf().

Compartilhar este post


Link para o post
Compartilhar em outros sites

Apesar de funcionar o fflush... tem um comportamento indefinido !

 

obs: fflush(stdin) não é recomendado, no documento da função está escrito: "effect undefined for input streams".

Uma opção seria usar operador de supressão no scanf().

 

Esta supressão seria isto?

printf("Digite seu nome: ");scanf("%s%*c", nome);printf("Qual o sexo?");scanf("%c", &sexo);

o %*c??? 

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

×