я работаю на код, чтобы получить детали USB устройства в одной струне, и имеют следующий код,Как избежать Sprintf при присоединении переменных
struct usb_bus *bus;
struct usb_device *dev;
usb_init();
usb_find_busses();
usb_find_devices();
for (bus = usb_busses; bus; bus = bus->next)
for (dev = bus->devices; dev; dev = dev->next)
{
// working outputs
printf("Trying device %s/%s\n", bus->dirname, dev->filename);
printf("Trying device2 %0x\n", dev->descriptor.idVendor);
printf("Trying device3 %0x\n", dev->descriptor.idProduct);
char deviceDetailsStr[150];
sprintf(deviceDetailsStr, "%s_%s_%0x_%0x", bus->dirname,
dev->filename,dev->descriptor.idVendor,dev->descriptor.idProduct);
... have other code here that works on "deviceDetailsStr"
}
начиталась thatt «Sprintf» имеет проблемы с производительностью, так как он поддерживает множество преобразований.
Можете ли вы предложить что лучше альтернатива использованию «Sprintf», так что данные все 4 переменных получает считываются в переменную «deviceDetailsStr»
конечная цель «deviceDetailsStr» массив символов должен иметь все 4 заходы в одиночная строка.
Благодаря
Являются ли проблемы с производительностью действительно причиной того, что вы хотите заменить 'sprintf'? Вы уверены, что это ваше узкое место? – Evert
'snprintf', вероятно, лучше, чем' sprintf'. – Evert
Вы можете использовать strcat() несколько раз. – FredK