http://blog.chinaunix.net/uid-9234131-id-3575486.html
分类: C/C++
2013-04-09 22:37:09
由于最近在找工作,在一个笔试的题要求删除字符串中中所有的空格,比如原数组
要将原数组变成
当时时间紧迫,编写了一个函数,虽然完成了功能,但是用了两层循环,效率不高,晚上回家补写删除空格函数,内容如下:
这个函数的原理就是p,q指针指向同一个字符串,当q指针的值为要删除的字符时,q向前跳一个字符,但是p指向要删除的字符不动,q则判断新位置值是否为删除字符,如果不是,那么就从不是删除字符的位置的值赋给p指向空格的值,循环往前加,直到q=\0结束,但是当q结束了,但是p移植后面的值没有被删除,那么p='\0'则表示将后面的字符截断了。字符串的长度就变成p的位置。
- char array[]="I am Chinese . I can speak English";
- char array[]="IamChinese.IcanspeakEnglish";
- /************************************************************************/
- /* 删除字符串中指定字符 */
- /************************************************************************/
- void del_char(char* str,char ch)
- {
- char *p = str;
- char *q = str;
- while(*q)
- {
- if (*q !=ch)
- {
- *p++ = *q;
- }
- q++;
- }
- *p='\0';
- }