字符替换操作

背景:ping诊断功能的结果是直接将ping结果的数据显示出来,但是web显示%为乱码,我查了一下需要转义,% 单列出来就是取模运算符,%%只输出一个百分号。

写了个字符串替换函数

        /* handle special character '%' */
        if (strstr(buff, "%"))
        {
            replaceChar(buff, "%", "%%", sizeof(buff));

            if (fprintf(fxp, buff) < 0)
            {
                break;
            }
        }


static void replaceChar(char *str, char *oldStr, char *newStr, int len)
{
    char buf[len];
    int i = 0;

    memset(buf, 0, sizeof(buf));

    if (NULL == str)
    {
        return;
    }

    while (i < strlen(str))
    {
        if (!util_strncmp(str + i, oldStr, 1))
        {
            strncat(buf, newStr, strlen(newStr));
        }
        else
        {
            strncat(buf, str + i, 1);
        }

        i++;
    }
 
    UTIL_STRNCPY(str, buf, len);
}

后来一个大佬看到我的提交,因为功能是他之前写过的,过来跟我讲,用fputs替换fprintf试试,就不用转义了。

以下是fputs用法(man fputs):

默默将自己写的这段代码加上了#if 0  #endif。。。。。

原文地址:https://www.cnblogs.com/xuqiushuo/p/10642936.html