Ciao a tutti. Da poco mi sono avvicinato al linguaggio C e vorrei avere un aiuto riguardo ad esso. Ho scritto un programma che prende in input due vettori A e B di int e verifica se la sequenza di numeri in B è contenuta in A. Ho usato i puntatori per memorizzare i vettori.
L'idea della funzione controllo() era di confrontare A[a+b] con B[a] con a e b inizialmente 0. Parto con b=0 e incremento a. Nell'incrementare, appena vedo che all' a-esimo passo A[a+0] è diverso da B[a] mi fermo e pongo b=1 e rinizio ad incrementare a partendo da a=0. (a lo incremento fino a VN2 che è la lunghezza del vettore). 
Ho usato più while, però dopo aver inserito i vettori, credo mi entri in un loop perchè non stampa a schermo nulla. Per come ho capito gli while prima dovrebbe lavorare su quelli più interni e poi su quelli più esterni. Correggetemi se sbaglio. Ci sono anche degli if else. Potrbbe essere lì il problema?
Grazie.
Questo è il programma:
#include<stdio.h>
#include<stdlib.h>
#define TRUE 1
#define FALSE 0
int controllo(int *V1,int *V2,int VN1,int VN2, int *ptrfound);
int main(int *A1, int *A2, int N1, int N2)
{
       
      int count;
      int found;
     
      
      printf("Inserisci lunghezza A1");
      scanf("%d",&N1);
      printf("Inserisci lunghezza A2");
      scanf("%d",&N2);
      
      A1=(int *)malloc(N1*sizeof(int));
      A2=(int *)malloc(N2*sizeof(int));
      
      if(N2>N1) {printf("Impossibile verificare. Lunghezza di A2 maggiore di A1");
                 found=FALSE;
                 system("PAUSE");
                 return found;}
      else{     
                printf("Inserisci il vettore A1");
                for(count=0;count<N1;count++)
                {
                 scanf("%d",&A1[count]);}
                printf("Inserisci il vettore A2"); 
                for(count=0;count<N2;count++)
                {
                 scanf("%d",&A2[count]);}
          }
          
controllo(A1,A2,N1,N2,&found);
system("PAUSE");
return found;
}
int controllo(int *V1,int *V2,int VN1,int VN2, int *ptrfound)
{
     int blocco;
     int found;
     int esci;
     int a;
     int b;
     a=0;
     b=0;
     blocco=FALSE;
     esci=FALSE;
     while((b<=(VN1-VN2)) && (esci==FALSE))        
          { 
            while((a<VN2) && (blocco==FALSE))
                 {
                   while(V1[a+b]!=V2[a])
                      { a=a++; 
                        if(a=VN2-1){printf("Ok, fine");
                               *ptrfound=TRUE;
                               return *ptrfound;}
                      }
                  blocco=TRUE;
                  
                 }
            if(blocco==TRUE)
              
              {
                 a=0;
                 b=b++;
              }
            else
                 esci=TRUE;
          }              
                 
     if(blocco==FALSE)
       
          { 
            printf("Ok");
            *ptrfound=TRUE;
            return *ptrfound;
          }   
          
     
     else
          printf("No");
          
}