Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di Lak3d
    Registrato dal
    Aug 2006
    Messaggi
    1,035

    [C] Prendere gli ultimi tre caratteri di una stringa

    C'è poco da fare... con le stringhe ho sempre qualche difficoltà... avrei bisogno di prendere gli ultimi tre caratteri di una determinata stringa... cosa che poi andrà inserita in un ciclo for per essere eseguita diverse volte.

    Il problema è che fra le funzioni di ricerca delle stringhe (strchr, strrchr, strcspn ecc) non ce n'è una che faccia al caso mio... tutte restituiscono dei puntatori o il numero di occorrenze...

    mi servirebbe una roba tipo la right(str,3) presente però in VB... sapete se esiste qualcosa di simile o se devo costruirmela da solo?

  2. #2

    ma...

    ti servono i tre caratteri singolarmente? o devi estrapolare una sottostringa dagli ultimi tre caratteri?

  3. #3
    Utente di HTML.it L'avatar di Lak3d
    Registrato dal
    Aug 2006
    Messaggi
    1,035
    sottostringa... o meglio, non devo estrapolarli, devo soltanto verificare se sono uguali a tre caratteri che definisco...

    strlen(str)-4 considerando il carattere nullo potrebbe essere un'idea valida di partenza per poi scorrerla fino in fondo? una funzione già pronta non esiste?

  4. #4

    e guarda

    Bhe si avevo pensato alla tua stessa idea...un bel strlen(stringa) poi fai un ciclo che parte dal valore che strelen ti restituiesce e vai indietro di 3 volte prendendo ogni volta il carattere...una cosa cosi:

    strlen(pippo)

    for(i=pippo;i>(pippo-3);i--)
    carattere=pippo[i];


    questa dovrebbe essere la linea generale....

    per la funzione che faccia tutto da sola sinceramente non ne sono a conoscenza...ma io programmo si e no da 6 mesi...(l argomento stringhe lo ho appena finito )...magari AndBin, Oregon o Mitaly ti daranno (sicuramente ) dritte migliori Io cmq spero di esserti stato utile!

    Saluti!

  5. #5
    Utente di HTML.it L'avatar di Lak3d
    Registrato dal
    Aug 2006
    Messaggi
    1,035
    sìsì, ci sono riuscito! Thanks!

    codice:
    int main(){
    char a[]="abcde";
    char b[]="cde";
    int ok=1;
    int j,l;
    
    l=strlen(a)-3;
    for (j=0; j<3; j++){
       if(a[l]!= b[j])
          ok=0;
       l++;
    }
    
    printf("%d", ok);
    return 0;
    }
    Il problema adesso sarebbe come riuscire a farlo con un vettore di puntatori a stringa... idee?

  6. #6
    Originariamente inviato da Lak3d
    sìsì, ci sono riuscito! Thanks!

    codice:
    int main(){
    char a[]="abcde";
    char b[]="cde";
    int ok=1;
    int j,l;
    
    l=strlen(a)-3;
    for (j=0; j<3; j++){
       if(a[l]!= b[j])
          ok=0;
       l++;
    }
    
    printf("%d", ok);
    return 0;
    }
    Il problema adesso sarebbe come riuscire a farlo con un vettore di puntatori a stringa... idee?
    cioe, correggimi se sbaglio, fare il confronto su ogni stringhe contenuta nel vettore di puntatori?

    se cosi fosse tu hai il tuo vettore di puntatori, per es:

    char * pippo[2]={"Mario",
    "Lucia"};

    ora per accedere ai singoli caratteri di una particolare stringa basta che scrivi

    pippo[i][j]...

    nel tuo codice quindi devi solo aggiungere un ciclo che scorre il vettore verso il basso (cioe scorra le "righe") mentre il ciclo interno scorrera le colonne come fai adesso, andando a pescare le singole lettere.

    Fammi sapere si riesci a implementare cosi! Io ora esco da lavoro Leggo eventuali repliche a casa!

    Saluti!

  7. #7
    Utente di HTML.it L'avatar di Lak3d
    Registrato dal
    Aug 2006
    Messaggi
    1,035
    l'avevo pensato anch'io... dove i è l'elemento puntatore n e j è l'n-esimo carattere della stringa... però la sintassi [][] mi pare faccia riferimento a vettori bidimensionali...
    ci provo vah

  8. #8
    Utente di HTML.it L'avatar di Lak3d
    Registrato dal
    Aug 2006
    Messaggi
    1,035
    codice:
    int main(){
    char *a[4]={"abcd", "efgh", "afgh", "xyzx"};
    char b[]="fgh";
    int i,j,l,ok;
    
    for (i=0; i<4; i++){
       ok=1;
       l=strlen(a[i])-3;
       for (j=0; j<3; j++){
          if(a[i][l]!= b[j])
             ok=0;
          l++;
       }
       printf("%d", ok);
    }
    
    return 0;
    }
    ma lol, funge! che newbie che sono...
    La prossima volta prima di aprire un thread faccio almeno un tentativo.
    Grazie UBeginner

  9. #9

    e figurati

    quando vuoi siamo qui!

    Buon weekend!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.