Iniciante - Função dupla vogal

Estou tentando contar o número de duplas vogais, porém, não estou conseguindo verificar a posição i+2(a terceira), da forma que está agora é como se o segundo && fosse desconsiderado.

int contaDuplaVogal(char alvo[40]){
int i;
int duplaVogal = 0;
for(i = 0; i < 40 && alvo[i] != ‘\0’; i++){
if(
(toupper(alvo[i]) == ‘A’ ||
toupper(alvo[i]) == ‘E’ ||
toupper(alvo[i]) == ‘I’ ||
toupper(alvo[i]) == ‘O’ ||
toupper(alvo[i]) == ‘U’
) && (
toupper(alvo[i+1]) == ‘A’ ||
toupper(alvo[i+1]) == ‘E’ ||
toupper(alvo[i+1]) == ‘I’ ||
toupper(alvo[i+1]) == ‘O’ ||
toupper(alvo[i+1]) == ‘U’
) && (
toupper(alvo[i+2] != ‘A’) ||
toupper(alvo[i+2] != ‘E’) ||
toupper(alvo[i+2] != ‘I’) ||
toupper(alvo[i+2] != ‘O’) ||
toupper(alvo[i+2] != ‘U’) ||
toupper(alvo[i+2] == ’ ')
)
)
{
duplaVogal++;
}
}
return duplaVogal;
}

Como posso resolver esse problema, agradeço quem ajudar.

Tecnicamente, o erro iria ocorrer mesmo que você só utilizasse i + 1, afinal, está estourando o array.
O ideal é validar se a posição está dentro do tamanho do array, seja i + 1, i + 2, etc.

1 curtida

obrigado, funcionou