更新时间:2022-09-16 10:56:46
实例
替换前 abc def ghi
替换后 abcdefghighi
思路
从前往后遍历字符串a,记录空格的个数SpaceNum
a[i] = '' : SpaceNum++
a[i]!='' : a[i-SpaceNum] = a[i]
参考代码
#include <iostream> #include <cstring> using namespace std; void RemoveSpace(char *a) { if(a == NULL) return; int len = strlen(a); int SpaceNum = 0; for(int i = 0; i < len; ++i) { if(a[i] == ' ') ++SpaceNum; else if(SpaceNum > 0) a[i - SpaceNum] = a[i]; } a[len - SpaceNum] = '\0'; } int main() { char a[] = "abc def ghi"; cout << a << endl; RemoveSpace(a); cout << a << endl; }
结果
abc def ghi
abcdefghi
细节
赋值完后要置结束符'\0',否则还会记录原来的字符,比如
#include <iostream> #include <cstring> using namespace std; void RemoveSpace(char *a) { if(a == NULL) return; int len = strlen(a); int SpaceNum = 0; for(int i = 0; i < len; ++i) { if(a[i] == ' ') ++SpaceNum; else if(SpaceNum > 0) a[i - SpaceNum] = a[i]; } // a[len - SpaceNum] = '\0'; } int main() { char a[] = "abc def ghi"; cout << a << endl; RemoveSpace(a); cout << a << endl; }
结果
abc def ghi
abcdefghighi
本文转自jihite博客园博客,原文链接:http://www.cnblogs.com/kaituorensheng/p/3621772.html,如需转载请自行联系原作者