[C]Sostituzione di un carattere con più caratteri

di il
7 risposte

[C]Sostituzione di un carattere con più caratteri

Salve,

Sono nuovo del forum e ne approfitto per salutare tutti. Ho un piccolo problema, ho una stringa dove devo sostituire ':' con '123'.. Sono riuscito a fare la ricerca e localizzare i ':', me per poterlo sostituire con più caratteri ho bisogno credo di fare qualche shift verso dx di 2 Pos per creare lo spazio per contenere i caratteri in piu... Qualcuno mi sa aiutare?

7 Risposte

  • Re: [C]Sostituzione di un carattere con più caratteri

    Con un array di char (in C) o una string (in C++)?
  • Re: [C]Sostituzione di un carattere con più caratteri

    Array di Char in C
  • Re: [C]Sostituzione di un carattere con più caratteri

    Ma nel tuo array c'è lo spazio sufficiente o no? Mostra il codice
  • Re: [C]Sostituzione di un carattere con più caratteri

    Char null_id[256] = ":A:B:C:D:D:D:";
    len = strlen(null_id);
    for(i = 0; i < len; i++ ) {
    if(null_id[i + len] == ':') {
    ...........
    }
    }

    Cosi localizzo i ':', ma se provo a sostituirli con '%3a' si mangia due caratteri successivi chiaramente.... Credo si debbano spostare per far spazio ai due caratteri in piu. Grazie mille per chi mi aiuterà.
  • Re: [C]Sostituzione di un carattere con più caratteri

    
    #include <stdio.h>
    #include <string.h>
    
    int main(){
        char null_id[256] = ":A:B:C:D:D:D:";
        char sub[] = "%3a";
        int i = 0, j, len = strlen(sub) - 1, end = strlen(null_id);
        while(null_id[i]){
            if(null_id[i] == ':') {
                for(j = end; j > i; j--) 
                    null_id[j + len] = null_id[j];
                end += len;
                for(j = 0; j <= len; j++) 
                    null_id[i + j] = sub[j];            
            }
            i++;
        }
        printf("%s", null_id);
        return 0;
    }
    
  • Re: [C]Sostituzione di un carattere con più caratteri

    Per lo OP
    Non è per nulla facile


    In C gli array, comprese le stringhe, hanno lunghezza fissa predefinita a compile-time

    Se usi array locali, anche stringhe, possono avere lunghezza definita a run-time, ma non viene considerata cosa buona


    Ti tocca di contare i caratteri da sostituire
    Calcolare la nuova lunghezza, mi raccomando il terminatore
    Allocare un'area di memoria
    Scriverci dentro la nuova stringa
    E poi usare quella

    E in mezzo ci metti che il nome della stringa (vecchia) essendo un nome di array non può puntare alla stringa nuova, tocca di risolvere anche questo

    Insomma quando avrai fatto avrai imparato tanto
  • Re: [C]Sostituzione di un carattere con più caratteri

    Weierstrass ha scritto:


    
    #include <stdio.h>
    #include <string.h>
    
    int main(){
        char null_id[256] = ":A:B:C:D:D:D:";
        char sub[] = "%3a";
        int i = 0, j, len = strlen(sub) - 1, end = strlen(null_id);
        while(null_id[i]){
            if(null_id[i] == ':') {
                for(j = end; j > i; j--) 
                    null_id[j + len] = null_id[j];
                end += len;
                for(j = 0; j <= len; j++) 
                    null_id[i + j] = sub[j];            
            }
            i++;
        }
        printf("%s", null_id);
        return 0;
    }
    
    Grazie Mile... Proprio quello che mi serviva Funziona alla grande.. Ancora grazie
Devi accedere o registrarti per scrivere nel forum
7 risposte