Bonjour,
Voici un code :
Ce code fonctionne très bien sur mon PC avec mingw64. Il affiche 6.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 #include <array> #include <iostream> int main() { std::string str("11:22:33:aa:bb:cc"); std::array<std::uint8_t, 6> macAddress; auto n = sscanf(str.c_str(), "%2hhx:%2hhx:%2hhx:%2hhx:%2hhx:%2hhx", &macAddress[0], &macAddress[1], &macAddress[2], &macAddress[3], &macAddress[4], &macAddress[5]); std::cout << std::hex << n << std::endl; }
Il ne fonctionne pas avec une autre toolchain pour embarqué (arm-none-eabi-gcc), le résultat est 1. En revanche, le résultat est correct si j'utilise %2x comme format, bien que le compilateur émette des warnings car les variables ne sont pas du type attendu.
Les deux sont dans des versions similaires de gcc (7.quelque chose). Bug de toolchain ? Undefined behavior ? Un truc qui m'échappe ?
Merci pour vos lumières !![]()
Partager