> debut = malloc(100);
- je ne vois pas de free() sur cette variable. utilise plutot:
char debut[128];
qui est plus rapide qu'un malloc, et se libère automatiquement à la fin de la fonction.
> res = mysql_store_result(conn)
cette ligne alloue aussi de la mémoire, interne à la librairie mysql client, que tu as oublié de libérer, tu as probablement une fuite mémoire dans ton code
> nb_tour = *ligne[0];
si mes souvenirs sont bons, les type MYSQL_ROW est une liste de chaînes de caratères, aussi avec ton code, tu mets le numéro ASCII du premier caractère du premier champs dans nb_tour (un chiffre, c'est de 64 à 74). Ce qu'il faut faire, c'est transformer cette représentation sous forme de chaîne en un nombre. Pour celà je te conseilles de vérifier quel est le type entier utilisé par ton champs (int,bigint...) et quelle est sa longueur (cette dernière info est dans la doc mysql, chapitre type entiers). Très vraisemblablement, tu devra utiliser l'une des fonctions atoi(), atol(), atoll():
nb_tour = atoll(*ligne[0]);
Une dernière remarque, si tu doit éxécuter plusieurs requêtes, ouvre et ferme la BDD en dehors de ta fonction, au début et à la fin du programme par exemple.