Asteriscare i caratteri non lettere di una parola in C

Vogliamo realizzare un programma che prenda 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 semplicemente sostituendo il carattere non opportuno.

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

L’eercizio non è complesso se pensiamo alla parola come un vettore. Procediamo con la lettura attraverso la funzione fgets da input di tastiera. Dopo aver calcolato la lunghezza effettiva della parola inserita possiamo preparare il ciclo, ad esempio for, per girare lettera per lettera il nostro vettore e verificare/sostituire la lettera nel posto selezionato.

#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 19 Ottobre 2023