Bonjour,

Je suis depuis un moment sur la conversion d'un bigint d'id d'enregistrement de MySql (mysql.h) vers un programme en C.
Le programme me retourne un Id égale à 49 au lieu de 1 et 50 au lieu de 2, etc...

Pourquoi ? quelqu'un aurait-il une idée?

Code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
typedef struct Raspberry{
    unsigned int id;
    char hostname[20];
    char ip[15];
} Raspberry;
 
...
 
void query_raspi(Raspberry (*raspis)[255]) {
...
    while ((row = mysql_fetch_row(result)))
        {
            (*raspis)[i].id = (unsigned int)(*row)[0]; // --> renvoie 49 au lieu de 1
            sprintf((*raspis)[i].hostname, "%s", row[1]);
            sprintf((*raspis)[i].ip, "%s", row[2]);
            printf("%u %s %s\r\n", (*raspis)[i].id, (*raspis)[i].hostname, (*raspis)[i].ip);
            i++;
        }
        //Libération du jeu de résultat
        mysql_free_result(result);
 
....
La tablea:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
 
CREATE TABLE IF NOT EXISTS `raspi` (
`id` bigint(20) unsigned NOT NULL,
  `hostname` varchar(50) NOT NULL,
  `ip` varchar(15) NOT NULL,
  `piece` varchar(50) NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;
 
--
-- Contenu de la table `raspi`
--
 
INSERT INTO `raspi` (`id`, `hostname`, `ip`, `piece`) VALUES
(1, 'raspberrypi', '192.168.1.240', 'chaufferie'),
(2, 'RPI2B', '192.168.1.242', 'salon');
 
--
-- Index pour les tables exportées
--
 
--
-- Index pour la table `raspi`
--
ALTER TABLE `raspi`
 ADD UNIQUE KEY `id_2` (`id`), ADD UNIQUE KEY `id_3` (`id`), ADD KEY `id` (`id`);
 
--
-- AUTO_INCREMENT pour les tables exportées
--
 
--
-- AUTO_INCREMENT pour la table `raspi`
--
ALTER TABLE `raspi`
MODIFY `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=4;
Merci, Giamba