No entiendo como es que un while tan simple no da más de si :S 
 
while (i<10 || n!=2){
        printf("texto : " ); scanf(" %[^\n]",var_struct[x].v_dato);
        printf("textp2 "); scanf("%d",&n);
        i++;
    }
 
Vamos a repasar conceptos .... si se cumple n = 2 acaba el programa :S 
 
No funciona como es ?: S ;S
 
Creo que es después de var_struct..... que deja el valor a NULL puede ser ? S:S:S:: 
 
Creo que después de esto me retiro :) 
   
 


