#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define isspace(c) ((c) == ' ' || (c) == '\t' || \
(c) == '\r' || (c) == '\n')
//用于去掉字符串头部的空格
char* skip_space(const char* str)
{
while (isspace(*str))
{
++str;
}
return (char*)str;
}
//用于去掉字符串头部+尾部的空格。str前面没有const,它指向的
//字符串会被修改
char* strim(char* str)
{
unsigned int size;
char* end;
str = skip_space(str); //str指向头部第1个非空格字符
size = strlen(str);
if (0 == size) //str只含有若干空格和若干空字符
{
return str; //函数直接结束
}
end = str + size - 1; //end指向str最后1个字符,非'\0'
/***************************************************************
* end >= str,是怕end--跑到首字符前面。???难道数组首元素都在最低
* 地址,所以end值大于等于str??? 等号是size为1的情况。
***************************************************************/
while (end >= str && isspace(*end))
{
end--;
}
*(end+1) = '\0';
return str;
}
int main(int argc,const char* argv[])
{
char a[20] = " 12345 ";
char* b = strim(a);
puts(b);
printf("%d\n",strlen(b));
return 0;
}
strim去掉字符串两边的空格
猜你喜欢
转载自blog.csdn.net/wanggong_1991/article/details/94452145
今日推荐
周排行