Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    110

    [C] ricerca di stringhe

    una volta scrissi...
    while((ptrString=strstr(ptrString,ToSearch[t])) != NULL)
    {
    count++;
    ptrString++;
    }
    e qualcuno mi fece notare che non è in questo modo che faccio la ricerca di un gruppo di lettere in una stringa....tipo ffwAAAfswcofkwAkf eil gruppo di lettere potrebbe essere qualcosa come wA e la risposta è wA -> 2
    la domanda è: qualcuno suggerisce qualche altra funzione in particolare?

    saluti

  2. #2
    Utente di HTML.it L'avatar di Mods
    Registrato dal
    Jun 2004
    Messaggi
    302
    potresti essere un po' più chiaro?? Non capisco esattamente il problema...
    Ci sono 10 tipi di persone al mondo: quelli che conoscono il codice binario, e quelli che non lo conoscono!

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    110
    dato ffwAAAfswcofkwAkf vorrei cercare quante volte la sottostringa wA è ripetuta.
    quindi il risultato finale dovrebbe essere wA -> 2
    (però non deve darmi le altre possibilità come quante volte ha trovato A per esempio)

  4. #4
    Utente di HTML.it L'avatar di ibykos
    Registrato dal
    Feb 2005
    Messaggi
    201
    Se il tuo sistema operativo è linux, il meglio per il tuo problema è utilizzare uno script bash e servirti di grep, sed e awk.

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    110
    forse non mi sono spiegato.
    Devo costruire uno script, non mi servono altri comandi da shell. Quindi mi chiedevo quale fosse una funzione utile al mio caso.

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    569
    Ho fatto qualcosa del genere tempo fa, se può servirti:

    codice:
    int main ( void )
    {
         int i=0 , conta=0;
         char str1[]={"abcdefgabhilababmnopabcxzab"};
         char str2[]={"ab"};
         int len1=strlen(str1);
         int len2=strlen(str2);
         
         for ( i=0 ; i<(len1-len2+1) ; i++ ) 
               if ( str2[0]==str1[i] && controlla(str1,str2,i,len2) )
                         conta++;       
                                
        if (conta)
             printf("\n\nLa stringa e' contenuta %d volte",conta);
        else
             printf("\n\nLa stringa non e' stata riconosciuta");
        
        getchar();
                        
        return 0;
        }
    
    int controlla (char *s1,char*s2,int indice,int len_s2)
    {    
         int a=0;
              
         for ( a=0; a<len_s2 ; a++ ) 
             if ( s2[a]!=s1[indice+a] )
                 return 0;
               
        return 1;
        }
    Ciao Ciao

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    110
    ok grazie ora leggo, me la studio un attimo e la cambio...
    ciao!

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    110
    con
    t controlla (char *s1,char*s2,int indice,int len_s2)
    {
    int a=0;

    for ( a=0; a<len_s2 ; a++ )
    if ( s2[a]!=s1[indice+a] )
    return 0;

    return 1;
    }
    all'interno dell'if, cosa vai a controllare?

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    569
    La funzione controlla(...) è vera se a partire da un dato indice di s1 tutti gli elementi successivi coincidono con s2.

    ad es.

    s1:qwabcdefgacb
    s2:ab

    scorro la s1 finchè non trovo una 'a' , cioè s2[0]
    in questo caso indice=2
    la funzione controlla mi dice se a partire dall'indice 2 tutti i caratteri di s2 coincidono con s1
    in questo caso è vera:
    qwabcdefgacb
    ab

    in questo no
    qwabcdefgacb
    ab
    perchè s1[indice+1] dovrebbe essere b e non c

  10. #10
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    569
    Scusa, non mi ha spaziato l'esempio

    codice:
    in questo caso è vera:
    qwabcdefgacb
        ab
    
    in questo no
    qwabcdefgacb
                  ab
    perchè s1[indice+1] dovrebbe essere b e non c

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.