warning: implicit declaration of function ‘strlen’ [-Wimplicit-function-declaration]

#include <stdio.h>
#include <stdlib.h>
#include <strings.h>
int main()
{
    int j, vogais = 0, VOGAIS = 0, vogaistotais, tam;
    char a[1] = "a";
    char e[1] = "e";
    char i[1] = "i";
    char o[1] = "o";
    char u[1] = "u";
    char A[1] = "A";
    char E[1] = "E";
    char I[1] = "I";
    char O[1] = "O";
    char U[1] = "U";
    char texto[50];
    setbuf(stdin, NULL);
    printf("Insira um texto: ");
    fgets(texto,50,stdin);
    tam = strlen(texto);
    for (j=0; j<tam; j++){
        if (strcmp(texto[j], a) == 0){
            vogais = vogais + 1;
        }
        else{
            if (strcmp(texto[j], e) == 0){
                vogais = vogais + 1;
            }
            else{
                if (strcmp(texto[j], i) == 0){
                    vogais = vogais + 1;
                }
                else{
                    if (strcmp(texto[j], o) == 0){
                        vogais = vogais + 1;
                    }
                    else{
                        if (strcmp(texto[j], u) == 0){
                            vogais = vogais + 1;
                        }
                        else{
                            if (strcmp(texto[j], A) == 0){
                                vogais = vogais + 1;
                            }
                            else{
                                if (strcmp(texto[j], E) == 0){
                                    vogais = vogais + 1;
                                }
                                else{
                                    if (strcmp(texto[j], I) == 0){
                                        vogais = vogais + 1;
                                    }
                                    else{
                                        if (strcmp(texto[j], O) == 0){
                                            vogais = vogais + 1;
                                        }
                                        else{
                                            if (strcmp(texto[j], U) == 0){
                                                vogais = vogais + 1;
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    printf("Vogais Minusculas: %d", vogais);
    printf("Vogais Maisuculas: %d", VOGAIS);
    printf("Vogais: %d", vogaistotais);
    return 0;
}

solucao.c:21: warning: implicit declaration of function ‘strlen’ [-Wimplicit-function-declaration]
tam = strlen(texto);

solucao.c:21: warning: incompatible implicit declaration of built-in function ‘strlen’ [enabled by default]
tam = strlen(texto);

solucao.c:23: warning: implicit declaration of function ‘strcmp’ [-Wimplicit-function-declaration]
if (strcmp(texto[j], a) == 0){

salvo engano strings.h é um header do c++ que define algumas poucas funções.

strlen e strcmp estão definidas em string.h ( sem o ultimo s ) por isso vc tem este warning

seu codigo tem outros problemas. primeiramente é dificil de ler.

ao inves de

if ( ... ) {
  ...
} else {
  um outro if
}

vc pode fazer

if ( ... ) {
  ...
} else if ( ... ) {
  
} else {
  // se nenhum if /else if entrou.
}

fica BEM mais legivel.

ai quando ficar legivel vc vai descobrir que strcmp(texto[j], letra) não é a forma como vc quer comparar.

strcmp compara strings. texto[j] é um char. é uma letra. vc poderia fazer

if ( texto[j] == 'a' ) { 
   ...

que funcionaria. atente para as aspas simples.

por fim, vc não precisaria fazer esse monte de if.

vc pode ter um vetor com todas as vogais.

um laço sobre todas as letras lidas do texto ( em i )
um laço interno sobre todas as vogais ( em j )
bastaria comparar se a letra atual texto[i] é a vogal atual vogal[j]

pense nisso