Eliminare l'ultimo carattere di una stringa

di Anonimizzato12016 il
7 risposte
Ciao a tutti!

Ho un problema che non riesco a risolvere e che spero riusciate ad aiutarmi a risolvere:

Dato un indirizzo email ( es. ) devo controllare se al fondo della stringa c'è un punto ( es. . ) e se c'è devo eliminarlo dalla stringa.

Per ora sono riuscita a individuare se c'è o meno il punto con la funzione ispunct() ma non so come togliere il punto dalla stringa.

Grazie in anticipo per le vostre risposte.

7 Risposte

  • Potresti copiare la stringa in un vettore di caratteri (con un ciclo for) copiando le lettere solo se sono diverse dal punto (con un if)
  • Eh ma io voglio tenere i punti che ci sono nel mezzo della mail. Devo togliere solo l'ultimo se c'è. Ho fatto un for e la mia idea era di copiare ogni lettera della mail in un nuovo vettore di caratteri e dato che il ciclo si ferma alla lunghezza della mail-1 allora non memorizza il punto nel nuovo vettore di caratteri. Ma non funziona.
  • Ah scusa, non avevo letto con attenzione, perchè non funziona?, posta il codice
  • m=strlen(email);
    if(ispunct(email[m-1]))
    {
    for(k=0; k<m-1; k++)
    {
    senzapunto[k]=email[k];
    //printf("%s\n", senzapunto);
    }
    printf("L'email senza il punto finale e': %s \n", senzapunto);

    }
    Per la prima mail che trova con il punto funziona, per la seconda mail che trova se è più corta della prima gli attacca in coda le lettere finali della prima dato che gli sono rimaste in memoria in senzapunto.
    es. . .
    esce:
    L'email senza il punto finale e':
    L'email senza il punto finale e':
  • Prova così
    
    int m = strlen(email);
    if(email[m-1] == '.')
       email[m-1] = '\0';
    
    Non c'è bisogno di copiare in un altra stringa, semplicemente tronchi la prima.
  • Perfetto..funziona benissimo!
    Grazie mille
  • Figurati
Devi accedere o registrarti per scrivere nel forum
7 risposte