1.字符串取出多余的空格,包括行首的空格,單詞與單詞之間只能有多余的空格,結尾不能有空格。
例如:“ i am lsj ” ==》“i am lsj”
[cpp]
#include<iostream>
#include<cctype>
using namespace std;
void deleteSpace(char* str)
{
char *ptr = str;
bool flag = true;
while(isspace(*str++));//去除字符串開始的空格
--str;
while(*str){
if(isalpha(*str)){
if(ptr != str)//防止同一個空間賦值
*ptr++ = *str;
flag = true;
}
else{
if(flag){
*ptr++ = *str;
flag = false;
}
}
str++;
}
ptr--;//ptr已經被加1了,特別注意
if(isspace(*ptr)) //去除結尾的空格
*ptr = '\0';
else
*++ptr = '\0';
};
int main()
{
char str[]=" i am lsj ";
//這裡不能定義,這樣定義" i am lsj"就是在字符串常量區分配空間
//即不能對str進行操作,在deleteSpace中也不能通過ptr賦值了
//系統編譯報錯
//char *str=" i am lsj ";
cout<<str<<endl;
deleteSpace(str);
cout<<str<<":The end"<<endl;
system("pause");
return 0;
}
#include<iostream>
#include<cctype>
using namespace std;
void deleteSpace(char* str)
{
char *ptr = str;
bool flag = true;
while(isspace(*str++));//去除字符串開始的空格
--str;
while(*str){
if(isalpha(*str)){
if(ptr != str)//防止同一個空間賦值
*ptr++ = *str;
flag = true;
}
else{
if(flag){
*ptr++ = *str;
flag = false;
}
}
str++;
}
ptr--;//ptr已經被加1了,特別注意
if(isspace(*ptr)) //去除結尾的空格
*ptr = '\0';
else
*++ptr = '\0';
};
int main()
{
char str[]=" i am lsj ";
//這裡不能定義,這樣定義" i am lsj"就是在字符串常量區分配空間
//即不能對str進行操作,在deleteSpace中也不能通過ptr賦值了
//系統編譯報錯
//char *str=" i am lsj ";
cout<<str<<endl;
deleteSpace(str);
cout<<str<<":The end"<<endl;
system("pause");
return 0;
}