Alguém me ajuda nesse programa ? está mostrando a mensagem "segmentation fault"

//Aluno Jonas Reis lima
//2º período de análise e desenvolvimento de sistemas noturno

//Biblioteca de compilação
#include <stdio.h>
#include <assert.h>
#include <string.h>
#include <stdlib.h>

//função contador, onde o alfabeto será contado das duas formas possiveis, (maiúsculas, ou minusculas)
void cont_letras(char *nome1){

char alfabeto [] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
int numAlfabeto = 0 , i , j;

for(i = 0; nome1[i] != '\0';i++){
            for(j = 0; alfabeto[j] != '\0';j++){
                if(alfabeto[j] == nome1[i]){
                    numAlfabeto++;
                    break;
                }
            }
        }

        printf("Total de caracteres alfabeticos %d \n",numAlfabeto);

}

void TotalEspaco(char *nome2){

int Total_espaso = 0;
for(int i = 0;i <= 100-1;i++ ){
    if(nome2[i] == ' '){
        Total_espaso++;
    }
}
    printf("Total de espaços %d \n",Total_espaso);

}

void TotalDigitos(char *nome3){

int Total_Digitos = -1; //
int i = 0;

while(1){
    if(nome3[i] != '\0'){
        Total_Digitos++;
    }
    i++;  //

    if(nome3[i] == '\0'){
        break;
    }
}
    printf("Total de Digitos = %d\n",Total_Digitos);//todos os caracteres digitados!

}
int main(){

char *nome;
int  total_Alfa= 0;
//=========================
//=========================

fflush(stdin);//limpar o buffer do teclado

    printf("Digite nome # ");
    fgets(nome, 100,stdin);
            
        //----------------------- chamando das funções:            
        cont_letras(nome);
        TotalEspaco(nome);
        TotalDigitos(nome);
        //----------------------

return 0;

}

Não olhei seu código detalhadamente, mas na função TotalDigitos, tente o while dessa forma…

while(1){
    if(nome3[i] == '\0'){
        break;
    }
    Total_Digitos++;
    i++;
}

Do jeito que estava, se no primeiro if a variável i fosse a ultima posição de nome3 por exemplo 100, no segundo if já seria 101 por causa do i++ anterior, ou seja, estouraria o tamanho do array…

O while ficaria melhor ainda assim:

while(nome3[i] != '\0'){
    Total_Digitos++;
    i++;
}

Já que a condição de parada do laço é chegar no final da string, o while irá parar naturalmente…