两头堵模型(用来去除有一个字符串开头或结尾含有n个空格(” abcdefgdddd ”),欲去掉前后空格,返回一个新字符串。),工程开发经常需要用到的



//1、有一个字符串开头或结尾含有n个空格(”   abcdefgdddd    ”),欲去掉前后空格,返回一个新字符串。
//要求1:请自己定义一个接口(函数),并实现功能;70分
//要求2:编写测试用例。30分
//int trimSpace(char *inbuf, char *outbuf);
int trimSpace(char *str, char *newstr)
{
char *p = str;
int ret = 0;
int i = 0;
int ncount = 0;
//这里strlen()测的长度 不包括‘\0’结尾符
//sizeof()测的是内存块大小 包括‘\0’结尾符
int j = strlen(str) - 1;//因为数组从0开始
if (str == NULL || newstr == NULL)
{
ret = -1;
printf("func err:str=NULL||ncount==NULL\n");
return ret;
}


//int isspace(int c)
//函数说明:检查参数c是否为空格字符 是 返回true(1)
while (isspace(p[i]) && p[i] != '\0')
{
i++;
}
while (isspace(p[j]) && p[j] != '\0')
{
j--;
}
ncount = j - i + 1;
//strncpy(char *s1, const char *s2, int n)
//其中有三个参数分别表示目标字符串s1,源字符串s2,拷贝长度。
//意思是将s2指向的字符串的前n个长度的字符放到s1指向的字符串中,并将s1原有的前n个字符覆盖.
strncpy(newstr,str+i,ncount);
newstr[ncount] = '\0';
return ret;
}
//去除前后空格符
//str所指向的内存空间能修改才行,否则会报错
int  main0102()
{
char *str = "    abcdefgdddd    ";
char newstr[50] = { 0 };
trimSpace(str, newstr);


printf("newstr:%s\n", newstr);
system("pause");
return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值