limpar buffer neste simples programa [RESOLVIDO]

1. limpar buffer neste simples programa [RESOLVIDO]

Daniel
danielcrvg

(usa Slackware)

Enviado em 03/08/2012 - 16:55h

Ola galera do VOL, sou novo na area de programacao, to vendo linguagem C na faculdade, gostaria de uma ajuda neste programa, que é simples. O usuario escreve uma frase, o programa retorna a frase que ele digitou e a frase digitada porem com as vogais trocadas, pelos caracters: 4(a) 3(e) 1(i) 0(o) *(u).

Exemplo:


Obrigado meu Deus.
0br1g4d0 m3* D3*s.


Ele roda perfeitamente, porem fica aparecendo uns "algarismos estranhos" logo apos ele retornar a frase digitada pelo usuario.. Me disseram que é lixo no buffer, que eu precisava limpa-lo.

Pesquisei na net e encontrei a funcao fflush(stdin), stdIN pq significa entrada de dados pelo teclado.
Depois resolvi receber a string(frase digitada pelo usuario) com a funcao fgets().

Deem uma olhada no codigo que se segue, roda ele e comecem a escrever frases de qualquer tamanho que voces vao ver os tais "algarismos estranhos".

Obrigado,

Daniel.

#####################################

#include <stdio.h>
#include <stdlib.h>


int main () {

int x, i, cont;
char frase[100];
char frase2[100];
cont=0;


printf("\nDigite uma frase: \n");
fgets(frase,100,stdin); // fgets(nomedastring,tamanho,stdIN de entrada de dados pelo teclado)
//gets(frase); <------- Eu tentei com o gets() tambem, se quiser tentar é so descomentar.
fflush(stdin); // <------- Tentei colocar em diversos lugares no codigo para limpar o buffer.

for (x=0; frase[x] != '{TEXTO}'; x=x+1) {
frase2[x] = frase[x]; // eu passo a frase inserida pelo usuario para dentro da string frase2.
}
for (i=0; frase[i] != '{TEXTO}}'; i=i+1) {
if (frase[i] == 'a' || frase[i] == 'A') {
frase[i]='4';
cont=cont+1;
}
if (frase[i] == 'e' || frase[i] == 'E') {
frase[i]='3';
cont=cont+1;
}
if (frase[i] == 'i' || frase[i] == 'I') {
frase[i]='1';
cont=cont+1;
}
if (frase[i] == 'o' || frase[i] == 'O') {
frase[i]='0';
cont=cont+1;
}
if (frase[i] == 'u' || frase[i] == 'U') {
frase[i]='*';
cont=cont+1;
}
}
printf("\nFrase original: %s\n",frase2);
printf("\nFrase modifiada: %s\n",frase);
printf("Numero de caracteres modificados: %d\n\n",cont);
return(0);
}


  


2. MELHOR RESPOSTA

VM
tn4ehi

(usa Outra)

Enviado em 04/08/2012 - 06:07h

Segue EXEMPLO comentado: http://sprunge.us/iWYB?c

3. Re: limpar buffer neste simples programa [RESOLVIDO]

Daniel
danielcrvg

(usa Slackware)

Enviado em 04/08/2012 - 08:30h


Obrigado cara, eu nem conhecia essas bibliotecas ctype.h e string.h.. E tb essas funcoes tolowe, strpy e strlen..

Eu estou estudando baseado naquela apostila da UFMG, voce me indicaria outra fonte de estudo?? Pode ser um livro, apostila, qualquer coisa..


Obrigado mais uma vez,

Daniel.


4. Re: limpar buffer neste simples programa [RESOLVIDO]

VM
tn4ehi

(usa Outra)

Enviado em 04/08/2012 - 11:05h

danielcrvg escreveu:


Obrigado cara, eu nem conhecia essas bibliotecas ctype.h e string.h.. E tb essas funcoes tolowe, strpy e strlen..

Eu estou estudando baseado naquela apostila da UFMG, voce me indicaria outra fonte de estudo?? Pode ser um livro, apostila, qualquer coisa..


Obrigado mais uma vez,

Daniel.


Logo pra mim você faz essa pergunta? rs

Indicar fonte de estudo é complicado, até porque faz mais de 10 anos que comecei a aprender C, foi a primeira linguagem compilada que aprendi. Geralmente eu aprendo fazendo, foram poucas apostilas que li relacionadas a programação, livros nenhum (e isso é até engraçado por eu ser uma pessoa que gosta bastante de ler).

O que posso te dizer é para fazer o seu aprendizado ser o PID 1, tornar isso parte da rotina, uma necessidade, assim você aprende melhor. e principalmente TENHA FOCO! Não seja que nem eu rsrs (enquanto eu aprendia C eu vi um pouco de C#, fui pro C++, voltei pro C, passei pelo python... não faça isso! Uma coisa de cada vez)

Cada um tem sua forma de aprender, você vai encontrar seu caminho. Não sou a melhor pessoa para de dar indicações.

Boa sorte amigo.







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts