Bibliotecas Necessárias:

#include <stdio.h>
#include <sys/types.h>
#include <dirent.h>

int conta_arquivos() {
  int numero_arquivos_diretorio = 0;

  DIR *diretorio;

  struct dirent *ep;

  diretorio = opendir ("./");
  if (diretorio != NULL) {
    while(ep = readdir(diretorio)){
      //puts (ep->d_name);
      numero_arquivos_diretorio++;
    }
  } else {
    perror("Erro. Diretorio inexistente!!!\n");
  }

  numero_arquivos_diretorio -= 3;
  (void) closedir (diretorio);
  return numero_arquivos_diretorio;
}