
CaioMGA
(usa Linux Mint)
Enviado em 13/08/2010 - 12:15h
Boa Tarde,
Estive programando em C. Peguei uns exercícios e comecei a fazê-los.
Cheguei num exercício que não entendo o erro.
O exercício pedia para o usuário digitar uma string e depois exibir o histograma das vogais. Histograma? Fácil, algo nessa linha:
a: ******(6)
e: ***(3)
i: *****(5)
.
.
.
Fiz o programa, compilei, tudo OK!
ele roda e pede para eu informar a string, eu informo e aparece a mensagem: falha de Segmentação.
Eis o Código Fonte:
#include <stdio.h>
#include <string.h>
int main()
{
//programa que exibe histopgrama das vogais digitadas préviamente
char str[40];
int a=0, e=0, i=0, o=0, u=0, j;
printf("Informe uma String:\n");
scanf(" %39[^\n]", str);
j=strlen(str);
for(j=j-1;j>=0;j--)
switch (str[j])
{
case 'a': case 'A': a+=1;break;
case 'e': case 'E': e+=1;break;
case 'i': case 'I': i+=1;break;
case 'o': case 'O': o+=1;break;
case 'u': case 'U': u+=1;break;
default: break;
}
mostra(a, 'a');
mostra(e, 'e');
mostra(i, 'i');
mostra(o, 'o');
mostra(u, 'u');
}
int mostra(int letra/*número de vogais*/, char vogal[1]/*vogal própriamente dita*/)
{
int total = letra;
printf("%c:", vogal[0]);
for(letra = letra;letra>0;letra--)
printf("*");
printf("(%d)\n", total);
return 0;
}
Quem souber responder ganha um picolé de limão!
grato