字符串内存图如下:
引入头文件:
1 #include<stdlib.h> 2 #include<stdio.h> 3 #include<string.h>
函数原型:
1 void trim(char *strIn /*in*/, char *strOut /*in*/);
实现方法一:
void trim(char *strIn, char *strOut){ int i, j ; i = 0; j = strlen(strIn) - 1; while(strIn[i] == ' ') ++i; while(strIn[j] == ' ') --j; strncpy(strOut, strIn + i , j - i + 1); strOut[j - i + 1] = '\0';}
实现方法二:
1 void trim(char *strIn, char *strOut){ 2 3 char *start, *end, *temp;//定义去除空格后字符串的头尾指针和遍历指针 4 5 temp = strIn; 6 7 while (*temp == ' '){ 8 ++temp; 9 }10 11 start = temp; //求得头指针12 13 temp = strIn + strlen(strIn) - 1; //得到原字符串最后一个字符的指针(不是'\0')14 15 printf("%c\n", *temp);16 17 while (*temp == ' '){18 --temp;19 }20 21 end = temp; //求得尾指针22 23 24 for(strIn = start; strIn <= end; ){25 *strOut++ = *strIn++;26 }27 28 *strOut = '\0';29 }
测试:
1 void main(){ 2 char *strIn = " ak kl p "; 3 4 char strOut[100]; 5 6 trim(strIn, strOut); 7 8 printf("*%s*\n",strOut); 9 10 system("pause");11 }
你可以这样理解 impossible(不可能)–I'm possible (我是可能的)。