【发布时间】:2014-07-02 08:55:37
【问题描述】:
我必须准备一个必须通过套接字发送的字符串,该字符串是使用不同的数据类型 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);
任何帮助appriciated。
问候
【问题讨论】:
-
首先,停止转换
malloc()的返回值。为了安全起见,使用snprintf()而不是sprintf()。 -
@user3477950 这两个
sprintf语句都是安全的。 -
它可能需要很长时间,因为您至少要在循环中运行它一千次。
-
不连接单个字符串并发送结果,而是直接发送单个字符串。
-
@user3631987 网络搜索将产生有关 malloc 的信息
标签: c