首先分析空格可能出现的位置:
- 开头为空格,全部删掉,可用一个循环来实现:从头扫描字符串,是空格,直接跳过去;不是空格,就退出循环。
while(str[i]!='\0') //处理字符串开头为空格 { if (str[i]!=' ') { break; } i++; }
2. 空格在中间位置:逐个字符扫描,如果不是空格就拷贝;遇到连续多个空格,只添加第一个空格。
怎么判断是不是第一个空格呢?可以设置一个is_first_blank变量来确定。当遇到空格且是第一个空格时,拷贝过来,并置变量is_first_blank为0;当遇到非空格字符,直接拷贝,并重置变量is_first_blank为1。
3. 结尾有空格,需要删掉。if(str[j-1]==' ') //处理字符串末尾的空格:全部删掉。 { str[j-1]='\0'; } else { str[j]='\0'; }
完整代码如下: