1 – 18 de 18
Blogger MB disse...

Não percebo o que estou a fazer errado, independentemente de que função utilize o aplicativo recebe a primeira letra mas não a segunda, indica logo o resultado!
Ex (c/ getchar - o resultado é o mesmo c/ todas):
#include
int main()
{
char letra1, letra2;
printf("Digite uma letra ");
letra1=getchar();

printf("Digite outra letra ");
letra2=getchar();

printf("As letras digitadas foram %c e %c", letra1, letra2);
}

E o resultado é (digitando m):
Digite uma letra m
Digite outra letra As letras digitadas foram m e

Process returned 31 (0x1F) execution time : 2.454 s
Press any key to continue.

20 de fevereiro de 2014 às 18:40

Anônimo Apostila C Progressivo disse...

Olá MB,

Leia o tutorial que vem logo na sequência, no índice de nossa apostila, sobre o Buffer em C.

20 de fevereiro de 2014 às 18:44

Anônimo Anônimo disse...

Olá,

não tem exemplo usando fgetc()

1 de março de 2014 às 10:25

Blogger Unknown disse...

Não se esqueça de inserir a biblioteca do C responsável por estes métodos no cabeçalhos do código.
#include

4 de março de 2014 às 09:45

Blogger Unknown disse...

#include
#include

int main()
{
char letra1, letra2;

printf("Insira um caractere: ");
scanf("%c", & letra1);

printf("Insira outro caractere: ");
scanf("%c", & letra2);

printf("Você digitou: '%c' e '%c'", letra1, letra2);
}
\\-----------------------------

Comigo após eu digitar o primeiro valor a tela fechou e nao exibiu nehum resultado, tentei usar o dois comandos para tentar resolver o problema Getch (); e o Break (); mas não obtive resultado satisfatórios.

26 de agosto de 2014 às 16:00

Anônimo Rafael Ferreira disse...

Galera boa tarde !

estava fazendo o mesmo código aqui e estava com o mesmo problema que vocês .... percebi que não precisava necessariamente de dois "PRINTSFS" . Segue abaixo o código :
#include

int main()
{
char letra1, letra2;

printf("Insira duas letras: ");
letra1 = getc(stdin);
letra2 = getc(stdin);

printf("Voce digitou: '%c' e '%c'", letra1, letra2);

getch();

system("pause");
return 0;

}


no caso ai , você ja digita as duas letra seguidas , ao contrário do exemplo padrão.

22 de outubro de 2014 às 12:27

Anônimo Anônimo disse...

use system("pause");

25 de outubro de 2014 às 10:06

Anônimo Anônimo disse...

Uma forma de resolver o problema apresentado no artigo é o uso do fflush(stdin); esse comando limpa o buffer de entrada.

#include

int main()
{
char letra1, letra2;

printf("Insira um caractere: ");
letra1 = getc(stdin);
printf("Insira outro caractere: ");

fflush(stdin);

letra2 = getc(stdin);
printf("Você digitou: '%c' e '%c'", letra1, letra2);

return 0;
}

10 de novembro de 2014 às 05:39

Blogger Unknown disse...

Na minha opinião é melhor usar o gets(variável);, pois ele pode receber várias letras (palavras, frases...).

char palavra[limite de letras];
gets(palavra);

27 de abril de 2015 às 14:09

Blogger Renato disse...

RenatoM
O segundo pgm na forma descrita para mim não funciona
a contento. Fiz alteração como abaixo

#include
int main ()
{
char letra1, letra2, letra3;
printf("Insira os caracteres: ");
letra1=getc(stdin), letra2=getc(stdin), letra3=getc(stdin);
printf("Você digitou:'%c'e'%c'e'%c'", letra1, letra2, letra3);
}
// este pgm está errado, não retorna o segundo caractere.
// funciona se você digitar os dois caracteres em sequência
e depois enter, portanto a primeira instrução deveria ser
insira caracteres + enter e a segunda instrução de digitar
o segundo caractere é sem efeito.
// forma minimizada para três caracteres.

Sds

16 de julho de 2015 às 21:46

Blogger Felipe Fontana disse...

\\faltou colocar o no #include para incluir a biblioteca ;D

#include

int main()
{
char letra1, letra2;

printf("Insira um caractere: ");
scanf("%c", & letra1);

printf("Insira outro caractere: ");
scanf("%c", & letra2);

printf("Você digitou: '%c' e '%c'", letra1, letra2);
}

2 de outubro de 2015 às 06:56

Blogger Meu disse...

Quando é melhor usar cada função scanf ou getchar ?

22 de outubro de 2015 às 17:35

Blogger Rafael Franco disse...

//Oi, o meu getchar() da erro, quando especifico um valor (quantidade);

#include

int main()

{

char a;

char a[100]; // Falha aqui
printf("Digite seu nome \n");
a = getchar();
printf("Seu nome é %c",a);
getch();
return 0;

// OBS Compilado no Turbo C

}

Por favor visitem meu canal no youtube. Tem gameplays de call of duty e violão. é só digitar na busca rafarnr. Obrigado

13 de dezembro de 2015 às 05:47

Anônimo Anônimo disse...

Segue a resolução usando scanf:
#include
int main()
{
char letra1,
letra2;
printf("Digite uma letra:\n");
scanf("%c",&letra1);
printf("Digite outra letra:\n");
scanf(" %c",&letra2);
printf("As letras que voce digitou foram: %c e %c\n",letra1,letra2);
return 0;
}

10 de março de 2016 às 07:08

Anônimo Anônimo disse...

Miqueias o gets não é recomendado, pois pode ter estouro de buffer :\

10 de março de 2016 às 07:10

Anônimo Anônimo disse...

Para resolver este erro do buffer voce deve inserir um espaço em branco antes do %c no scanf que recebera a variavel do tipo caracter.
Fica assim:

int letra;

printf("Digite uma letra: ");
scanf(" %c", letra);

13 de abril de 2016 às 03:45

Blogger Alan Silva disse...

quando eu uso getchar, só imprime a primeira letra de uma palavra digitada

14 de abril de 2016 às 21:53

Blogger Kaasi disse...

Pessoal como ñ vi ninguém comentando a resposta do pq o programa teste ñ chega a pedir a 2 letra, resolvi comentar;

Bem, é o seguinte:

-Ele ñ pede a 2 letra pq ele já tem.
-Mas como assim se eu só digitei uma letra e dei ENTER?
-Exato o getc capturou a letra e o ENTER.
-Tá e o que tem isso?
-Simples. Char só armazena 1 valor. O programa capturou 2 valores no 1º getc e como ele ñ tinha como armazenar os dois valores na variável letra1 ele procurou a proxima variavel no programa e achou letra2.

Quem quiser pode verificar isso prenstando atenção ao fato que o printf imprime uma aspa em linha diferente ou, se quiser, digite ENTER para a mensagem "Insira um caractere: " e digitar qualquer letra numero para a segunda mesagem. O resultado será uma quebra de linha após a primeira aspa e o segundo valor irá retornar normalmente.

14 de janeiro de 2017 às 06:25

É quase impossível criar centenas de páginas voltadas para programação C e não cometer algum erro.

- Se notar algum conceito, letra ou trecho de código errado, deixe sua correção

- Se perceber uma maneira melhor ou mais eficiente de fazer algo, deixe sua ideia

- Se algo não ficar claro ou for confuso, nos avise

Aos poucos vamos aumentando e melhorando a qualidade de nosso material, e para isso contamos com sua ajuda.
Você pode usar algumas tags HTML, como <b>, <i>, <a>

A moderação de comentários foi ativada. Todos os comentários devem ser aprovados pelo autor do blog.

Depois de enviar seu comentário, será necessário fazer login.
Prove que você não é um robô