2
I have a C function that should take a string, and pointers that have the amount of numbers and vowels that are present in the string, but the function is not adding up each time it finds a number or a vowel. Follows my code:
int main(){
char string[12]={"5bana22anab5"};
bool palindromo = true;
int qtdnumero=0,qtdvogal=0,qtdoutros=0;
informacoes(string,&palindromo,&qtdnumero,&qtdvogal,&qtdoutros);
if(palindromo == true){
printf("true ");
}else printf("false ");
printf("numeros: %d vogais: %d outros: %d",qtdnumero,qtdvogal,qtdoutros);
}
void informacoes(char str[12], bool *palindromo, int *qtdnumero, int *qtdvogal, int *qtdoutros){
int i, j=11,igual=1;
for(i=0;i<6;i++){
if(str[i]!=str[j]){
igual=0;
}
if(str[i]=='0' || str[i]=='1' || str[i]=='2' || str[i]=='3' || str[i]=='4' || str[i]=='5' || str[i]=='6' || str[i]=='7' || str[i]=='8' || str[i]=='9')
*qtdnumero++;
else if(str[i]=='a' || str[i]=='e' || str[i]=='i' || str[i]=='o' || str[i]=='u'){
*qtdvogal++;
}
else
*qtdoutros++;
if(str[j]=='0' || str[j]=='1' || str[j]=='2' || str[j]=='3' || str[j]=='4' || str[j]=='5' || str[j]=='6' || str[j]=='7' || str[j]=='8' || str[j]=='9')
*qtdnumero++;
else if(str[j]=='a' || str[j]=='e' || str[j]=='i' || str[j]=='o' || str[j]=='u'){
*qtdvogal++;
}
else
*qtdoutros++;
j--;
}
if (igual==0){
*palindromo=false;
}
}
The result of the function is = true numbers: 0 vowels: 0 other: 0 Does anyone have any idea why the function is not increasing the counters?
#include <ctype.h>
and replaces thoseif
s huge forif (isdigit((unsigned char)str[j])) /* ... */;
– pmg