Sostituzione caratteri in C

di il
6 risposte

Sostituzione caratteri in C

Ciao a tutti, di nuovo mi riaffido a voi, visto gli ottimi risultati in passato. Ecco il mio nuovo caso sul linguaggio C:

Ho un array di caratteri (max 7 caratteri). Esso può contenere solo numeri e lettere. Sono consentite massimo 4 lettere, e queste diciamo sono le mie variabili.
Vorrei creare gli input per una "tabella della verità" (risultato a parte, e no matrici grazie) di questa mia stringa, come input queste lettere (a,b,c,d) . Ovvero, in base al numero di variabili (lettere), ricavare il numero di combinazioni possibili (parliamo sempre di char).

Se mi fossi spiegato male faccio un paio di esempi:

Esempio Stringa #1
a2b
Combinazioni possibili (per un totale di quattro )
020 - 120 - 021 - 121

Esempio stringa #2
a4b5a
Combinazioni possibili (per un totale di otto)
04050 - 14051 - 04150 - 14151 - 04050 - 14051 - 04150 - 14151

(Come avete visto le lettere posso essere sparse o addirittura ripetute)
Esiste una qualche funzione, che riconosca da stringa dei caratteri e li sostituisce con altri ?
Qualche altra idea per questa tipologia di sostituzione? O idee del tutto nuove?

Grazie mille in anticipo, ed ancora un salutone a tutti!

6 Risposte

  • Re: Sostituzione caratteri in C

    Esiste una qualche funzione, che riconosca da stringa dei caratteri e li sostituisce con altri ?
    Qualche altra idea per questa tipologia di sostituzione? O idee del tutto nuove?
    No, non esiste una funzione di questo tipo.
    Puoi scrivere una funzione ricorsiva che con la ricorsione scorre tutta la stringa da sinistra a destra e per ogni carattere crea due rami di esecuzione se sul carattere corrente c'è un carattere alfabetico, altrimenti (se c'è un numero) prosegue con una sola chiamata; quando arrivi a fine stringa stampi il risultato.
  • Re: Sostituzione caratteri in C

    Ed infatti era la mia unica soluzione, grazie mille. E se invece di sostituire il carattere, lo volessi proprio eliminare, ad esempio togliere 'a' da "ciao", e ritrovarmi solamente "cio", è possibile? Ovviamente non conoscendo a priori la posizione di tale carattere.

    Grazie ancora!!
  • Re: Sostituzione caratteri in C

    Di solito per eliminare il carattere alla posizione i faccio una cosa del tipo
    strcpy( &str, &str[i+1] );
  • Re: Sostituzione caratteri in C

    Ma facendo così sostituisci il carattere i-esimo della prima , con il carattere i-esimo+1 della seconda. E la lunghezza della prima stringa rimane invariata, così come quello della seconda. Io voglio proprio eliminarlo in modo da trovarmi una stringa lunga -1 dell'originale.

    L'unica cosa che mi viene in mente è farmi proprio una stringa nuova (e copiare man mano ogni carattere i-esimo), ma volevo evitare ulteriori creazioni di stringhe.
  • Re: Sostituzione caratteri in C

    Con la strcpy() che ti ho postato in pratica copi tutta la sottostringa da [i+1] a partire dalla posizione e quindi elimini l'elemento nella posizione .
    In alternativa (ma alla fine fai la stessa cosa che fa la strcpy() che ti ho mostrato) puoi fare un ciclo per copiare tutti i caratteri indietro di una posizione.
  • Re: Sostituzione caratteri in C

    Capito! Pensavo funzionasse diversamente la funzione che mi hai postato. Ci proverò, altrimenti mi ricopio tutti i caratteri, se mi riesce più comodo. Grazie per i consigli!
Devi accedere o registrarti per scrivere nel forum
6 risposte