Jump to content

Recommended Posts

Posted

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.

Posted

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!

Posted
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!

Posted

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!

Posted

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!

Posted (edited)

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

Posted (edited)

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!

Posted

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

Posted (edited)

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!

Posted

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

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.