Para hacer eso debes responder a los eventos que se generar cuando se pulsa una tecla (keydown) y se libera (keyup)
La idea es sencilla, vas a almacenar el estado de cada tecla en variables (variables independientes, arrays, eso es otra cuestión), en este caso el estado es "tecla pulsada" o "tecla no pulsada" con lo que con variables booleanas vale.
Cuando detectes que una tecla se ha pulsado con los eventos de SDL, pones a true la variable de estado de esa variable, y cuando detectes que se ha dejado de pulsar la pones a false.
Luego, para mover el sprite lo que haces es consultar el estado de esas variables y actuar en consecuencia. La idea es separar conceptos:
mientras ( NOT juegoTerminado)
//Aquí actualizamos el estado de las teclas que están pulsadas o no
ActualizaEstadoTeclas()
//Aquí actualizamos el estado del sprite (posicion) comprobando en nuestras variables qué teclas están pulsadas (estado que hemos cambiado en la función anterior)
ActualizarEstadoSprite()
//Dibujamos el sprite en su posición que ha sido actualizada por la función anterior
DibujarSprite()
fin mientras
Eso es un bucle para videojuego muy (muy) simplificado, pero para ir aprendiendo es de sobra.