Jump to content

enter


fabioliveira

Recommended Posts

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.

Link to comment
Share on other sites

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!

Link to comment
Share on other sites

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!

Link to comment
Share on other sites

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!

Link to comment
Share on other sites

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.

Edited by 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%.

Link to comment
Share on other sites

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.

Edited by 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!

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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);
 }
}
Edited by 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!

Link to comment
Share on other sites

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

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.