由于最近在找工作,在一个笔试的题要求删除字符串中中所有的空格,比如原数组
-
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';
-
}
这个函数的原理就是p,q指针指向同一个字符串,当q指针的值为要删除的字符时,q向前跳一个字符,但是p指向要删除的字符不动,q则判断新位置值是否为删除字符,如果不是,那么就从不是删除字符的位置的值赋给p指向空格的值,循环往前加,直到q=\0结束,但是当q结束了,但是p移植后面的值没有被删除,那么p='\0'则表示将后面的字符截断了。字符串的长度就变成p的位置。
阅读(1768) | 评论(0) | 转发(0) |