每日一题:华为初级题库——字符串替换

  <题目要求>

    替换一个字符串中的某个特定字符为另一个字符,能返回是否替换成功,已经替换成功后的字符串;

   函数参数为一个字符串,一个要被替换的字符,被替换成的字符,输出的字符串,表示形式为:

int ProcessString( char * strInput,char chSrc,char chDes ,char * strOutput),其返回值0表示替换成功,-1表示替换失败。

  思路:逐一检测字符串中符合要求的某字符,相等则存储替换值,不相等则存储字符串的值。

  易错点分析:字符串问题(1)字符串是否为NULL,是否为‘\0’,是否进行了替换(没有替换,返回-1),保存的字符串最后是否加了‘\0’;(2)要替换的字符,是否为‘\0’,被替换的字符串是否为‘\0’。

int ProcessString( char * strInput,char chSrc,char chDes ,char * strOutput)
{
    if(strInput!=NULL&&strInput[0]!='\0'&&chSrc!='\0')
    {
        int i=0;
        int tmp=0;
        while(strInput[i]!='\0')
        {
            if(strInput[i]==chSrc)
            {
                strOutput[i]=chDes;
                tmp=1;
                if (chDes=='\0')//其实可以合并进去,因为比较的函数遇到‘\0’就停止了,所以遇到第一个会自动停止,无需单独考虑;
                {
                    return 0;
                }
            }
            else
                strOutput[i]=strInput[i];
            i++;
        }
        strOutput[i]='\0';
        if(tmp==1)
            return 0;
        else//无替换情况的讨论;
            return -1;
    }
    else
        return -1;
    
}

 

posted on 2014-04-22 21:30  Sophie@原本  阅读(289)  评论(0编辑  收藏  举报