我必须准备一个必须通过套接字发送的字符串,该字符串是使用不同的数据类型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/

10-13 00:06