Some pseudocode for aligning as asked for:
float* verticess = new float[NumFaces * 9]; // vertices : input, verticess ouptut to VBO
float* normalss = new float[NumFaces * 9]; // normals: input, normalss outut to VBO
float* texcoordss = new float[NumFaces * 6];
for(int i = 0; i < NumFaces; i++)
{
//For 3 vertices with 3(xyz coordinates) va - A vertex index, vb - B vertex ....
verticess[i * 9] = vertices[faces[i].va-1].v[0]; // vertices[i].v is array of 3(xyz)
verticess[i*9+1] = vertices[faces[i].va-1].v[1];
verticess[i*9+2] = vertices[faces[i].va-1].v[2];
verticess[i*9+3] = vertices[faces[i].vb-1].v[0];
verticess[i*9+4] = vertices[faces[i].vb-1].v[1];
verticess[i*9+5] = vertices[faces[i].vb-1].v[2];
verticess[i*9+6] = vertices[faces[i].vc-1].v[0];
verticess[i*9+7] = vertices[faces[i].vc-1].v[1];
verticess[i*9+8] = vertices[faces[i].vc-1].v[2];
//For normalss 3 normals with 3(xyz coordinates) na - A normal index...
normalss[i * 9] = normals[faces[i].na-1].v[0];
normalss[i*9+1] = normals[faces[i].na-1].v[1];
normalss[i*9+2] = normals[faces[i].na-1].v[2];
normalss[i*9+3] = vecnormals[faces[i].nb-1].v[0];
normalss[i*9+4] = vecnormals[faces[i].nb-1].v[1];
normalss[i*9+5] = vecnormals[faces[i].nb-1].v[2];
normalss[i*9+6] = vecnormals[faces[i].nc-1].v[0];
normalss[i*9+7] = vecnormals[faces[i].nc-1].v[1];
normalss[i*9+8] = vecnormals[faces[i].nc-1].v[2];
//for texcoordss 3 coords with 2(st coordinates) ta - A tex index ....
texcoordss[i * 6] = texcoords[faces[i].ta-1].v[0];
texcoordss[i*6+1] = texcoords[faces[i].ta-1].v[1];
texcoordss[i*6+2] = texcoords[faces[i].tb-1].v[0];
texcoordss[i*6+3] = texcoords[faces[i].tb-1].v[1];
texcoordss[i*6+4] = texcoords[faces[i].tc-1].v[0];
texcoordss[i*6+5] = texcoords[faces[i].tc-1].v[1];
}