pour le nom des touches, tu ouvres le fichier SDL_keysym.h que tu trouveras dans ton repertoire include. Je te laisse le regarder et le comprendre.
Allez, je te donne la réponse pour le controle gauche :
SDLK_LCTRL
Ensuite, pour gérer les touches, je te conseille, simplement, un tableau en variables globales :
char key[400];
qui te dira, a tout moment : 1 si ta variables est en bas, 0 si elle est en haut.
Si tu as ce tableau, tu vois aisément comment bien manier les touches, non ?
Alors pour mettre le tableau a jour :
tu te fais une fonction :
void UpdateEvents()
{
while(SDL_PollEvent(&))
{
if ( event.type == SDL_KEYDOWN)
{
key[event.key.keysym.sym]=1;
}
if ( event.type == SDL_KEYUP)
{
key[event.key.keysym.sym]=0;
}
}
}
que tu appelleras dans ta boucle principale. ( met ta variables event en global aussi, c´est mieux.
Je te laisse analyser cela 
Bon, pour le reste, le snake, tu te fais un tableau de N cases ( x,y) qui retient les N dernieres positions du serpent.
Il te suffit ensuite de mettre a jour le tableau en décalant les blocs 