[C] estrarre caratteri da una stringa

di il
5 risposte

[C] estrarre caratteri da una stringa

Ciao...esiste una funzione di C che mi permetta di estrarre il terzo, quarto e qionto carattere di una stringa e copiarli in un'altra stringa?

...mi spiego meglio, ho una matrice puntatori a stringhe, dalla stringa nella posizione [x][y] devo estrarre 3 caratteri da copiare nella stringa contenuta in [x][y+1]

grazie!!

5 Risposte

  • Re: [C] estrarre caratteri da una stringa

    Ciao,

    Dato un char* x puoi recuperare il carattere i-esimo con x.

    Non è chiaro dalla tua domanda se la stringa di destinazione deve essere formata dai soli caratteri estratti da quella d'origine, o se essi vanno posti nella stessa posizione che occupavano in quella d'origine.

    Non è comunque complicato in nessuno dei due casi... l'accesso che ho menzionato più sopra vale sia in lettura che scrittura...

    Per l'esempio che hai posto (terzo, quarto e quinto carattere), puoi supporre il codice che segue (supposti origine e destinazione due char*):
    int k=0;
    for(int i=2;i<5;i++){
       char c=origine[i]; //prendo l'i-esimo carattere
       dest[k++]=c; //e lo metto nella destinazione
    }
    dest[k]='\0'; //non scordiamo il terminatore. Se dest era già azzerata non è necessario
    Se i valori sono pochi, puoi sostituire un codice equivalente:
    dest[0]=origine[2];
    dest[1]=origine[3];
    dest[2]=origine[4];
    dest[3]='\0';
    
    I due esempi sono relativi al primo caso che ho descritto (nella destinazione scrivi uno dopo l'altro i caratteri estratti dal sorgente). Se ti interessa il secondo caso, basta eliminare k ed usare i come indice per dest...

    Ciaociao
  • Re: [C] estrarre caratteri da una stringa

    Ti ringrazio per l'aiuto, non sono un programmatore quindi mi blocco anche su cose semplici
    cercando una soluzione ho provato:
    
    for (k=0;k<4;++k) out[j][3][k]=mat[i+4][2][4+k];
    out[j][3][k]='\0';
    non capisco dove sbaglio
  • Re: [C] estrarre caratteri da una stringa

    Ciao,

    Dipende da cosa vuoi ottenere... col codice che hai postato inserisci in out[0..3] i caratteri presenti in mat[4..7].
    Ovviamente out[j][3] e mat[i+4][2] devono esistere e devono essere dei char* (o char[]).

    Per sicurezza utilizza comunque un puntatore intermedio:
    char *tmpOut=out[j][3];
    char *tmpMat=mat[i+4][2];
    E nella for lavora su tmpOut e tmpMat... non è necessario, ma magari ti agevola un minimo nel capire gli oggetti con cui hai a che fare.

    In ogni caso, suppongo che il tentativo che hai postato non abbia funzionato, ma dovresti descrivere *cosa* non ha funzionato... non compila? non effettua quello che dovrebbe? va in crash?

    Ciaociao
  • Re: [C] estrarre caratteri da una stringa

    Cerco di spiegarmi meglio
    mat e out sono definite come char * , nella mat[i+4][2] c'è una stringa del tipo " Kmi:270 Kmf:273", io devo prendere solo il valore 270 e metterlo in out[j][3]
    
     for (k=0;k<4;k++) {
              aux=mat[i+4][2][4+k];
              ax[k]=aux;
            }
            ax[4]='\0';
    		out[j][3]=ax;
    
    se adesso faccio:
    
    printf ("\n  %s",out[j][3]);
    il contenuto è quello corretto.
    una volta fatto questo la matrice viene copiata su un nuovo file csv e il programma finisce.
    qui arriva il problema, perchè nel csv non ho i valori ma solo simboli "x=" non capisco !!!!
  • Re: [C] estrarre caratteri da una stringa

    Ciao,

    Se nella printf il valore è corretto, probabilmente il problema è annidato nella parte di codice che salva il csv a partire dalla matrice. Prova a postarcelo così magari individuiamo meglio il problema...

    Ciaociao
Devi accedere o registrarti per scrivere nel forum
5 risposte