Salve ho daproporvi un nuovo esercizio che mi sta facendo perdere la pazienza funziona per tutte le combinazione tranne che quando la striga da ricercare è nell'ultima posizione Testo:scrivere una function c che elimini tutte le occorenze di una data sottostringa in una stringa
codice:
//Esercizio 23
#include <stdio.h>
#include<stdlib.h>
#define max 100
#include<string.h>

int confronto(int pos,char*p,char *q,int lenp,int lenq); 
void stampa(char*p,int len);
int inserisci(char*p );
void trova(int pos,char*p,char *q,int &lenp,int lenq);
void elimina(int pos,char*p,char *q,int &lenp,int lenq);
int main ( void ) 
{ 
  char str[max];
  char pas[max];
  int lenstr,lenpas,i,ind,pos=0;
  lenstr=inserisci(str);
  lenpas=inserisci(pas);
  stampa(str,lenstr);
  trova(pos,str,pas,lenstr,lenpas);
  //for(i=ind;i<(ind+lenpas);i++)
    //printf("%c",str[i]);
   stampa(str,lenstr);
   system("PAUSE");
   return 0 ; 
} 
int inserisci (char *p){
  int i=0;
  printf("Inserire la striga\n");
  gets(p);
  i=strlen(p);
  return i;
          }
    
void stampa(char*p,int len){
  int i;
  printf("%s\n",p);
     
}
int confronto(int pos,char*p,char *q,int lenp,int lenq){
  int j=0,h=0,k=0;
  printf("\n%d\n",lenq);
  while(pos<lenp){
    if(p[pos]==q[j])
    {           
       j++;
       h++;
       printf("%d",h);
    }
    else{
         if(h==lenq){
         printf("trovato in posizione %d\n",pos-h);
         h=0;
         return pos+1;}
         else 
         {
              h=0;
              j=0;
         }
    }
    pos++;
 }     
 return 200;
}   
    
void trova(int pos,char *p,char*q,int &lenp,int lenq){
  int i;
  i=0;
  int posizioni[100];
  while(pos<lenp-lenq){
                        
  pos=confronto(pos,p,q,lenp,lenq);
  if(pos<100)elimina(pos,p,q,lenp,lenq);
  posizioni[i]=pos; 
}

}
void elimina(int pos, char *p, char *q, int &lenp, int lenq)
{
     int i;
     for(i=pos-lenq-1;i< lenp ; i++)
     {
       p[i]=p[i+lenq];
       }
  lenp=lenp-lenq;     
}
grassie