Ho corretto l' es, ora viene, farò tesoro dei tuoi suggerimenti ovviamente, sperando di non essere un tuo studente!
Ecco l' esercizio corretto!

codice:
#include<stdio.h>
long Com(int A[],long dimA,int B[],long dimB);


int main(){
long n,m;
printf("Inserisci due valori n e m\n");
scanf("%ld%ld",&n,&m);


printf("Inserisci i valori del primo vettore\n");
int a[n],b[m];
long x,j,z;
for(x=0;x<n;x++){
scanf("%d",&a[x]);}

printf("Inserisci i valori del secondo vettore\n");
for(j=0;j<m;j++){
scanf("%d",&b[j]);}

long s=Com(a,n,b,m);

printf("La lunghezza del nuovo vettore modificato è %ld\n",s);
printf("Il vettore modificato è uguale a...\n");

for(z=0;z<s;z++){
printf("%d\n",a[z]);}}


long Com(int A[],long dimA,int B[],long dimB){

long i,j,k=0;

for(i=0;i<dimA;i++){
long j=0;
while(j<dimB && A[i]!=B[j]) j++;
if(A[i]==B[j]) {A[k]=A[i];
k++;}
}

return k;}
Ho corretto nella funzione il while al posto del for, in mondo che ogni volta ricominci il controllo dal primo elemento!