-
[重要1 和 重要2]
这两个地方都是我以前没有见过的,记下来。
#include <iostream>
using namespace std;
char * trim(char * str);
int main()
{
char s[1024]; // 定义存储字符串的一维字符数组
// 输入一行字符,可以包含空格
// 输入的字符串存入s中,最多读取个字符,后面自动加上'\0'
cin.getline(s,1024);
cout << trim(s) << endl; // 输出去掉首尾空格后的字符串
return 0;
}
// 函数trim:去掉字符串首尾空格
// 参数:str-字符指针,指向输入的字符串
// 返回值:字符指针,指向去掉首尾空格后的字符串(首地址)
// 提示:可以直接在字符串str中操作
char * trim(char * str)
{
// 请在此添加代码,实现函数trim
/********** Begin *********/
char *p = str;
while(*p != '\0')
p++;
p--; //离开'\0'
while(p >= str && *p == ' ')
{
*p = '\0'; //重要1.直接变成结束符号 避免输出后面的空格 这个太秀了,记下来。
p--;
}
//while完成后 p变成了尾指针
p = str; //重要2. 直接将p指针回到起点, 然后将其变为首指针(去除空格后的)
while(*p == ' ')
p++;
return p;
/********** End **********/
}