我必须准备一个必须通过套接字发送的字符串,该字符串是使用不同的数据类型int、char、unsigned char等构造的。。。由于我在很多地方都使用过它,我的callgrind报告说sprintf和strcat消耗了大部分CPU。
有人能告诉我这个sprintf和strcat的替代方案吗?
下面是一段代码
pData_temp = (char *)malloc(200);
pData = (char *)malloc(500);
sprintf(pData_temp, "String to be sent over socket at time %u $%04x",seconds,id);
strncpy(pData,pData_temp,strlen(pData_temp);
for in t(i=0; i < 1000; i++)
{
sprintf(pData_temp,"%02x%04x%08x%08x%08x",var1,var2,var3,var4,var5);
strcat(pData,pData_temp);
}
sprintf(pData_temp,"\n");
strcat(pData,pData_temp)
sock_send(pData,strlen(pData);
free(pData);
free(pData_temp);
得到任何帮助。
当做
最佳答案
您正在使用 Shlemiel the painter's algorithm。
相反,你可以按你写的长度向前推进,而不是一次又一次地向前推进。pData
返回需要添加的号码。
但正如@alk在评论中指出的那样,直接将strcat
写入套接字可能更好——根本不用费心创建一个大字符串。
关于c - 如何避免在C中调用sprintf,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23652339/