Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 27
  1. #1

    [ANSI C] esiste una funzione tipo substr_count di PHP ?

    in pratica esiste una funzione di <string.h> che mi da il numero di occorrenze di un carattere ( o di una stringa ) all' interno di un' altra stringa ?

    grazie
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  2. #2

    Re: [ANSI C] esiste una funzione tipo substr_count di PHP ?

    Originariamente inviato da andr3a
    in pratica esiste una funzione di <string.h> che mi da il numero di occorrenze di un carattere ( o di una stringa ) all' interno di un' altra stringa ?

    grazie
    http://forum.html.it/forum/showthrea...hreadid=753477
    char *strchr(const char *s, int c);
    cerca un carattere c nella stringa s e torna il puntatore a quel
    carattere o null
    con un semplice ciclo usando questa funzione puoi creartela tu.


    (se devi cercare una stringa usa
    char *strstr(const char *s1, const char *s2);
    trova la prima sottostringa s2 in s1
    )

  3. #3

    Re: Re: [ANSI C] esiste una funzione tipo substr_count di PHP ?

    Originariamente inviato da kentaromiura
    con un semplice ciclo usando questa funzione puoi creartela tu.
    uhm ... io me la sono creata per i fatti miei ed ecco cosa ho scritto ...


    codice:
    int conta_occorrenze(
    	char *stringa,
    	char *cerca
    )
    {
    	int 	a,
    		b,
    		c;
    	int occorrenze = 0;
    	int caratteri_da_allocare = strlen(cerca);
    	int caratteri_da_leggere = strlen(stringa);
    	char *controllo;
    	
    	controllo = (char *) calloc( 
    		(caratteri_da_allocare+1), 
    		sizeof(char)
    	);
    	
    	for(a=0;a<caratteri_da_leggere;a++)
    	{
    		for(b=0,c=a;b<caratteri_da_allocare;b++)
    		{
    			if(stringa[c]!='\0')
    			{				
    				controllo[b] = stringa[c++];
    			}
    			else
    			{
    				b = caratteri_da_allocare;
    			}
    		}
    		controllo[b] = '\0';
    		if(strcmp(cerca,controllo)==0){
    			occorrenze++;
    		}
    	}
    	return occorrenze;
    }
    funziona bene, pero' non so come inviare un solo carattere, per ora ho ovviato sapendo che il carattere e' uno solo e creando un' altra variabile tipo

    char stringa_incognita[2];

    stringa_incognita[0] = CARATTERE_CONOSCIUTO;
    stringa_incognita[1] = '\0';

    e poi invio la ricerca, vorrei automatizzare al fine di ricreare precisamente la funzione substr_count di PHP ( ovvero non importa che invio un solo carattere o una stringa )

    consigli ???

    per ora grazie per l' utilissimo link
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  4. #4

    Re: Re: Re: [ANSI C] esiste una funzione tipo substr_count di PHP ?

    Originariamente inviato da andr3a
    uhm ... io me la sono creata per i fatti miei ed ecco cosa ho scritto ...


    codice:
    int conta_occorrenze(
    	char *stringa,
    	char *cerca
    )
    {
    	int 	a,
    		b,
    		c;
    	int occorrenze = 0;
    	int caratteri_da_allocare = strlen(cerca);
    	int caratteri_da_leggere = strlen(stringa);
    	char *controllo;
    	
    	controllo = (char *) calloc( 
    		(caratteri_da_allocare+1), 
    		sizeof(char)
    	);
    	
    	for(a=0;a<caratteri_da_leggere;a++)
    	{
    		for(b=0,c=a;b<caratteri_da_allocare;b++)
    		{
    			if(stringa[c]!='\0')
    			{				
    				controllo[b] = stringa[c++];
    			}
    			else
    			{
    				b = caratteri_da_allocare;
    			}
    		}
    		controllo[b] = '\0';
    		if(strcmp(cerca,controllo)==0){
    			occorrenze++;
    		}
    	}
    	return occorrenze;
    }
    funziona bene, pero' non so come inviare un solo carattere, per ora ho ovviato sapendo che il carattere e' uno solo e creando un' altra variabile tipo

    char stringa_incognita[2];

    stringa_incognita[0] = CARATTERE_CONOSCIUTO;
    stringa_incognita[1] = '\0';

    e poi invio la ricerca, vorrei automatizzare al fine di ricreare precisamente la funzione substr_count di PHP ( ovvero non importa che invio un solo carattere o una stringa )

    consigli ???

    per ora grazie per l' utilissimo link
    eccotela:
    codice:
    substr_count(char* s1,char*s2){
    	int l=strlen(s2);
    	int c=0;
    	while(s1!=NULL){
    		s1=strstr(s1,s2);
    		if(s1!=null){
    			s1+=l;
    			c++;
    			}
    		}
    return c;	
    }

  5. #5

    Re: Re: Re: Re: [ANSI C] esiste una funzione tipo substr_count di PHP ?

    Originariamente inviato da kentaromiura
    eccotela:
    codice:
    substr_count(char* s1,char*s2){
    	int l=strlen(s2);
    	int c=0;
    	while(s1!=NULL){
    		s1=strstr(s1,s2);
    		if(s1!=null){
    			s1+=l;
    			c++;
    			}
    		}
    return c;	
    }
    ok funziona ma sono terrorizzato dal fatto che non abbiamo visto strstr e magari il prof se la prende a male se uso cose che non ha spiegato

    mi spieghi pero' che diamine fa quell' strstr ???

    cioe'

    s1 = strstr(s1,s2)
    // trova la prima sottostringa s2 in s1

    e fin qui ok ...

    ma poi cosa significa questo ???
    s1+=l;

    cioe' ad una sottostringa aggiungi senza cast un intero ?
    e che fine ha fatto s1 ???


    vorrei solo essere certo che questo metodo rispetti gli standard ansi, come il mio dovrebbe fare, m'hanno gia' "non ammesso" una volta per sboronate mie su cose per me normali e per lui incomprensibili ...


    comunque grazie
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  6. #6
    sì è definita dallo standard ANSI per il C

    http://www.cplusplus.com/ref/cstring/strstr.html
    ...Terrible warlords, good warlords, and an english song

  7. #7
    Originariamente inviato da Johnny_Depp
    sì è definita dallo standard ANSI per il C

    http://www.cplusplus.com/ref/cstring/strstr.html
    ok, e il += (int) invece e' ANSI pure quello ? cosa fa di preciso ?
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  8. #8
    s1+s1=l

    è uguale a

    s1+=l // meglio scriverlo così (ANSI C)
    ...Terrible warlords, good warlords, and an english song

  9. #9
    Originariamente inviato da andr3a
    ok, e il += (int) invece e' ANSI pure quello ? cosa fa di preciso ?
    sommo l all'indice del puntatore di una stringa
    esempio
    se *p punta a "Sei un Fagianazzo"
    dopo un
    p+=7
    *p punterà a Fagianazzo
    ..aritmetica dei puntatori.

  10. #10
    Originariamente inviato da kentaromiura
    sommo l all'indice del puntatore di una stringa
    esempio
    se *p punta a "Sei un Fagianazzo"
    dopo un
    p+=7
    *p punterà a Fagianazzo
    ..aritmetica dei puntatori.
    posso sbavarti ?


    italianizzando questa va bene ?
    codice:
    int conta_occorrenze(
    	char *stringa,
    	char *cerca
    )
    {
    	int lunghezza_cerca = strlen(cerca);
    	int occorrenze = 0;
    	while(stringa)
    	{
    		stringa = strstr(stringa,cerca);
    		if(stringa)
    		{
    			stringa += lunghezza_cerca;
    			occorrenze++;
    		}
    	}
    	return occorrenze;	
    }
    senza il != NULL che mi sa di ridondante :master:


    grazie
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

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 © 2025 vBulletin Solutions, Inc. All rights reserved.