我對代碼的工作來獲得USB設備的詳細信息到一個String,並有下面的代碼,如何避免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個entires爲單個字符串。
由於
性能問題真的是你想要替換'sprintf'的原因嗎?你確定這是你的瓶頸嗎? – Evert
'snprintf'可能比'sprintf'好。 – Evert
您可以多次使用strcat()。 – FredK