去除字符串首尾多余的空格

题目内容:

用户输入一个字符串,首尾有多余的空格,编写程序来去除这些多余的空格。要求必须使用指针来完成本题。

输入格式:

一个首尾有多余空格字符串。为了便于标识出尾部的空格,在字符串尾部额外添加了个 #号表示字符串结束。字符串内部保证不会出现 #号。

输出格式:

去除空格后的字符串,同样在在字符串尾部额外添加了个 #号表示字符串结束。

输入样例:

     my score    #

输出样例:

 my score#
#include
using namespace std;

char* deletespace(char *p){
	int tail = 0;//自第一个不为0的字符开始到#之前的字符的长度
	int tailspace = 0;//末尾空格数 
	
	while(*p == ' ') p ++;//找到首个不为空格的位置
	char *mask = p;//标记下删去空格后新串的起始位置 

	while(*p!='\0'){
		tail ++;
		p++;
	} 
	tail = tail - 1;//找到最后一个空格的位置
	p = p - 2;
	
	while(*p == ' '){
		tailspace ++;
		p--; 
	} 
	tail = tail - tailspace;//找到最后一个不是空格的位置
	
	int length = tail +2;//删去空格后串的长度
	char *newstr = new char[length];//申请新串的存储空间 
	for( int i=0; i<tail; i++){
		//从标记点开始到最后一个不是空格的位置逐个赋给新串 
		newstr[i]  = *(mask++);  
	}
	*(newstr+length-2) = '#';
	*(newstr+length-1) = '\0';
	
	return newstr; 
}
int main(){
	char str[100];
	cin.getline(str,99);
	cout<<deletespace(str);

	return 0;
}

你可能感兴趣的:(西南交大MOOC,字符串,指针,算法)