本文主要是介绍不开辟临时空间,实现以单词为单位反转字符串,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
摘自http://blog.chinaunix.net/uid-21228455-id-2406482.html
|
c1
...
cx
空格
...
空格
Cy
...
cn-1
cn
‘\0’
*/
/* end指向字符串结尾处'\0',在处理字符串前,还要将end指向最后一个非'\0'处 */
end = begin;
--end;
/* 删除字符串末尾的空格 */
while(*end == ' '){
*end = '\0';
end--;
}
/* 字符串不止一个单词,需要翻转 */
if(flag == 1){
stringReverse(a, 0, end-a);
/* 删除字符串末尾的空格 */
while(*end == ' '){
*end = '\0';
end--;
}
for(begin = end =a; *end != '\0'; end++){
if(*end == ' '){ /* begin指向单词的第一个字符,(end-1)指向该单词的末尾 */
stringReverse(begin, 0, end-1-begin);
begin = end+1;
}
}
/*单词翻转时,begin和end指针的指向示意图
begin end-1 end
...
空格
c1
...
cx
空格
Cy
...
cn-1
cn
‘\0’
*/
/* 最后一个单词的处理 */
if(*end == '\0' && end-begin > 1){
stringReverse(begin, 0, end-begin-1);
}
}
}
int main()
{
char a[] = "All-in-one";
char b[] = " hello I will be with you";
printf("%s\n", a);
stringReverseOnWord(a);
printf("%s\n", a);
printf("%s\n", b);
stringReverseOnWord(b);
printf("%s\n", b);
return 0;
}
这篇关于不开辟临时空间,实现以单词为单位反转字符串的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!