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);
}