Ok grazie, ora funziona.
Ho modificato il codice nel modo seguente:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 6
#define M 7
#define D 6 //ci possono essere massimo 6 elementi in comune tra i due vettori di stringhe
#define LENW 20
int TrovaElementiUguali(char V1[N][LENW],char V2[M][LENW],char V3[N][LENW]);
int main()
{
char V1[N][LENW];
char V2[M][LENW];
char V3[D][LENW]; //vettore di stringhe in cui andare a inserire gli elementi presenti sia in V1 che in V2
int i;
for (i=0;i<N;i++){
printf("inserisci la %d-esima stringa nel primo vettore: ",i);
scanf("%s",V1[i]);
}
printf("\n");
for (i=0;i<M;i++){
printf("inserisci la %d-esima stringa nel secondo vettore: ",i);
scanf("%s",V2[i]);
}
int dim;
dim = TrovaElementiUguali(V1,V2,V3);
printf("Gli elementi comuni ai due vettori sono: ");
for (i=0;i<dim;i++){
printf("%s ",V3[i]);
}
return 0;
}
int TrovaElementiUguali(char V1[N][LENW],char V2[M][LENW],char V3[N][LENW]){
int i,j,cont;
cont = 0;
for (i=0;i<N;i++){
for (j=0;j<M;j++){
if (strcmp(V1[i],V2[j])==0){
(strcpy(V3[cont],V1[i]));
cont++;
}
}
}
return cont;
}
quindi ho capito che quando si lavora con le stringhe bisogna:
1. utilizzare le funzioni apposite , ad esempio se voglio confrontare gli elementi di due vettori di stringhe non posso fare if(V1[0]==V2[0]) ma devo usare la funzione strcmp
2.se un vettore non viene scritto interamente non lo posso leggere per intero , ma devo leggere solo le caselle che sono state scritte
Giusto?