Asteriscare i caratteri non lettere di una parola in C

Vogliamo realizzare un programma che prende una parola da tastiera e asterisca tutti i caratteri che non siano lettere alfabetiche, ovvero asterischi tutti i numeri, i simboli di punteggiatura, lettere accentate.

Esempio asdFGH4567@# -> asdFGH******

#include <stdio.h>
#include <string.h>

#define LUNGHEZZA 100
#define CARATTERE '*'

int main() 
{
  int i,j;
  
  char parola[LUNGHEZZA];
  int LUNGHEZZAEFFETTIVA;
  printf("Inserisci una parola da asteriscare ");
  fgets(parola,LUNGHEZZA, stdin);

  parola[strlen(parola)-1] = '\0';
  LUNGHEZZAEFFETTIVA = strlen(parola);  

  i = 0;
  for (i=0; i < LUNGHEZZAEFFETTIVA; i++)
  {
    
    //printf("analizzando la lettera %c \n", parola[i]);
    if ((parola[i]<'a' || parola[i]>'z') &&
        (parola[i]<'A' || parola[i]>'Z'))
    {
      parola[i] = CARATTERE;
    }
  
  }
  printf("La parola asteriscata è %s", parola);

  return 0;
}

Ultima modifica 10 Agosto 2022