替换空格

以前我总是通过文件来输入测试用例,但是等到再看代码的时候总是不知道关键的步骤在哪里,也不知道是哪个数据出错了;用下面这种方法很方便;

一本书有言道“如果应聘者是先写单元测试用例,再写解决问题的函数,我相信面试官定会对你刮目相看,因为能做到测试在前、开发在后的程序员实在是太稀缺了,他会毫不犹豫地抛出绿色的橄榄枝。

#include <iostream>
#include <string.h>

//不要只顾算法 也要考虑限制条件 
using namespace std;
void replaceBlank(char * str)
{
    
    if(str == NULL)
        return ;
    //下面计算字符串的长度;
    //下面计算空格的个数;

    int len = 0;
    int numberOfBlank = 0;
    for(int i=0;str[i]!=0;i++) 
    {
        if(str[i]==' ')
             numberOfBlank++;
         len++;
    }
    if(len == 0)
        return ;
//    //2015年3月10日 09:16:532015年3月10日 09:17:032015年3月10日 09:17:062015年3月10日 09:17:082015年3月10日 09:17:092015年3月10日 09:17:12
//    printf("%s %d
",str,len); 
    //计算最终字符串长度;
    int newLen = len + 2 * numberOfBlank;//包括结尾符号; 
    //下面开始从尾到头进行移动,直到两个下标一样的时候为止;
    str[newLen] = 0;
    int indexOfOld = len - 1 , indexOfNew = newLen - 1;
    
    while(indexOfOld != indexOfNew)
    {
        if( str[indexOfOld] != ' ')
        {
            str[indexOfNew] = str[indexOfOld];    
        }else{
            str[indexOfNew] = '0';
            str[--indexOfNew] = '2';
            str[--indexOfNew] = '%';
        }
        indexOfNew --;
        indexOfOld --;    

    }     
}
void Test(char * testNumber,char * oringialString,char * expectedString)//用来测试replaceBlank函数,由测试用例调用,而调用replaceBlank; 
{
    replaceBlank(oringialString);
    //printf("%s
",oringialString);
    printf("%s ",testNumber);
    if(oringialString == NULL && expectedString == NULL)
        printf("passed
");
    else
        
        if(strcmp(oringialString,expectedString) == 0)
            printf("passed
");
        else
            printf("failed
");
} 
void test1()
{
    const int len = 100;
    char str[len] = "helloWorld";
    Test("test1",str,"helloWorld");
}
void test2()
{
    const int len = 100;
    char str[len] = " helloWorld";
    Test("test2",str,"%20helloWorld");
}
void test3()
{
    const int len = 100;
    char str[len] = "helloWorld ";
    Test("test3",str,"helloWorld%20");
}
void test4()
{
    const int len = 100;
    char str[len] = "hello World";
    Test("test4",str,"hello%20World");
}
void test5()
{
    const int len = 100;
    char str[len] = "hello  World";
    Test("test5",str,"hello%20%20World");
}
void test6()
{
    const int len = 100;
    char str[len] = "hello  Wor ld";
    Test("test6",str,"hello%20%20Wor%20ld");
}
void test7()
{
    const int len = 100;
    Test("test7",NULL,NULL);
}
void test8()
{
    const int len = 100;
    Test("test8","","");
}
int main()
{
    /**/
    test1();
    test2();
    test3();
    test4();
    test5();
    test6();
    test7();
    test8();
    return 0;
}
原文地址:https://www.cnblogs.com/dragonfive/p/4334102.html