C scanf int dans struct

Je suis en train de lire quelques-uns entiers dans une struct. Je vais avoir à l'utilisateur d'entrer deux en 3 dimensions des vecteurs et le retour de deux croix des produits et le produit scalaire.

Il semble être ignorant la deuxième valeur de la deuxième vecteur. Voici mon code pour l'instant:

/** Write a program to calculate cross-products and dot products of 
**  a 3-dimensional vector:
**  
**    1. Uses a type definition
**    2. Accepts User input of qty(2) 3-dimensional vectors
**    3. Calculate the cross-product of A x B and B x A                         
**    4. Calculate the dot product A * B
**
******************************************************************/
/************* Preprocessor Functions       **********************/
#include <stdio.h>
#include <stdlib.h>
/************ Structured Data Types ***************************/
typedef struct vector
{
int x;
int y;
int z;
} Vector;
/*************   Declare User Functions  **********************/
int dot_product(Vector a, Vector b);
Vector cross_product(Vector a, Vector b);
/************     Begin MAIN LOOP     *************************/
int main(void)
{
/**      Declare variables     **/
Vector a, b, c;
printf("Enter the 3 integer components of the first vector: ");
scanf("%d%d%d", &(a.x), &(a.y), &(a.z));
printf("Enter the 3 integer components of the second vector: ");
scanf("%d%d%d", &(b.x), &(b.y), &(b.y));
c = cross_product(a, b);
printf("\n\t(%d %d %d) x (%d %d %d) = (%d %d %d)",   a.x,a.y,a.z,b.x,b.y,b.z,c.x,c.y,c.z);
c = cross_product(b, a);
printf("\n\t(%d %d %d) x (%d %d %d) = (%d %d %d)", b.x,b.y,b.z,a.x,a.y,a.z,c.x,c.y,c.z);
printf("\n\t(%d %d %d) * (%d %d %d) = %d\n", a.x,a.y,a.z,b.x, b.y,b.z,dot_product(a, b));
/***********   AND CUT!  It's a wrap folks!  Take 5!     ***********/    
return 0;
}
/**********    User Functions to perform the calculations    ****/
int dot_product(Vector a, Vector b)
{
return((a.x*b.x)+(a.y*b.y)+(a.z*b.z));
}
Vector cross_product(Vector a, Vector b)
{
Vector c;
c.x = (a.y*b.z)-(a.z*b.y);
c.y = (a.z*b.x)-(a.x*b.z);
c.z = (a.x*b.y)-(a.y*b.x);
return(c);
}

Si l'utilisateur entre: 3 2 1
Et puis entre: 5 6 2

Les deux vecteurs utilisés sont les suivants: [3 2 1] et [5 2 0]

J'ai essayé les espaces autour de l' %d dans le scanf, et pas de parenthèses autour de &un.x etc.

Merci pour regarder et toute aide est appréciée. Juste pour une information complète, c'est pour une programmation en C classe que je fréquente.