Ir para o conteúdo
fabioliveira

enter

Mensagens Recomendadas

fabioliveira

exemplo:

Insira um nome: blablabla

insira um numero:

insira um dado:

O meu problema é que quando insiro o nome e clico no 'enter' , ele insere o nome e o enter vai logo para o scanf do numero e passa logo para o dado.

Ou seja, insiro um nome e fica com o (nome) e no numero fica com um (\n).

Alguem sabe como resolver?

Aguardo resposta.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmg

Usa fgets() para obter input do utilizador.

Se necessário remove o ENTER do input.

Se necessario trata o input com sscanf() ou de outra forma.


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmg
char nome[100], numero[12], dado[3];
puts("Insira um nome: ");
fgets(nome, sizeof nome, stdin);
puts("Insira um numero: ");
fgets(numero, sizeof numero, stdin);
puts("Insira um dado: ");
fgets(dado, sizeof dado, stdin);


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmg

Eu não tenho nada contra a aprendizagem pela internet, mas, provavelmente, este forum não é o mais indicado para aprender o básico do C (ou de outra linguagem de programação).

Aconselho-te que perguntes ao teu professor :)

O sizeof é um operador da linguagem C.

O valor duma expressão com sizeof e um objecto é o tamanho, em chars, do objecto a que é aplicado. Nota que o objecto, se não for um VLA, não é avaliado.

Também se pode aplicar o operador a tipos (entre parentesis) e o valor da expressão é o valor que um objecto desse tipo ocupa.

Usei-o no exemplo acima para evitar repetir constantes. Se alterar o tamanho dos arrays não preciso de alterar a instrução com fgets() para reflectir o novo tamanho.


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
fabioliveira

char opcao_principal,opcao_cliente;

Eu tenho essas variaveis e quero fazer dois inputs para ai e tenho esse problema

Editado por pmg
GeSHi

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmg

Usa o fgets() com um array temporario, depois passa desse array para os caracteres em questao.


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
brunoais

O sizeof é um operador da linguagem C.

O sizeof é um macro. Acho melhor indicar como tal. Senão o pessoal ainda anda a pensar que é uma função, ou parecido.

Um macro é "uma função" do compilador. Ele irá executar o que se mandou executar usando o que se escreve e escreve um inteiro como output para o compilador de C.

Editado por brunoais

"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmg

O sizeof é um macro.

Um macro é "uma função" do compilador.

O sizeof é um operador, tal como, por exemplo, o & (para obter o endereco dum objecto).

http://port70.net/~nsz/c/c99/n1256.html#6.5.3

http://port70.net/~nsz/c/c99/n1256.html#6.5.3.4

O PDF com o Standard C99 diz a mesma coisa que os links acima. O texto do Standard mais recente (C11, PDF) é muito parecido.

Resumindo: O sizeof é um operador. Acho melhor nao lhe chamar outras coisas, principalmente, sendo essas coisas erradas.

Editado por pmg
link para PDF do C11

What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
brunoais

O sizeof é executado em tempo de compilação. O & é executado em tempo de execução.

Mas ok... Se é assim q o chamam oficialmente, então que o seja. (n estive a ler gde coisa do q está aí, só estive a tentar confirmar essa parte).


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmg

O sizeof é executado em tempo de compilação.

Excepto quando usado com VLAs (C99) ( ver ideone: http://ideone.com/Lk0BOw )

#include <stdio.h>

void foo(int n) {
 int VLA[n];
 printf("tamanho do array: %d\n", (int)sizeof VLA); /* sizeof @ runtime */
}

int main(void) {
 for (int i = 0; i < 3; i++) {
   int n;
   puts("introduz n (um numero pequenito, por favor): ");
   scanf("%d", &n);
   foo(n);
 }
}

Editado por pmg

What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
brunoais

ok, obg. É notícia para mim, mm!

Mas é bom sempre aprender mais.


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.