这个模型也很简单,参数里面一个是方法计算非空串个数,一个是返回非空串的内容。
主要还是接口的封装设计,要调用函数获得内容,就要把接口设计成一级指针的形式。除此之外,还要注意是参数是在主调函数里面分配内存。
int trimSpaceStr(char * p,char* buf,int * mycount){
int ret = 0;
int count = 0 ;
int i, j;
//设定起始指针位置
i = 0;
//设定末端指针位置
j = strlen(p) - 1;
while (isspace(p[i]) && p[i] != '\0') {
i++;
}
while (isspace(p[j])&& j > 0) {
j--;
}
count = j - i + 1;
//这里其实主要要注意的是这个函数
strncpy(buf, p+i, count);
buf[count] = '\0';
*mycount = count;
return ret;
}
int main(int argc, const char * argv[]) {
char buf[] = " abcd ";
char buf2[1024] = {0};
int count = 0;
trimSpaceStr(buf, buf2,&count);
printf("buf2:%s \n",buf2);
printf("count:%d \n",count);
system("pause");
return 0;
}
另外有一个特别要注意的点是
char buf[] = " abcd ";
char *p = " abcd ";
buf和p中指向的字符串并不是同一个区域,buf指向的是stack中的区域,而p是指向常量区的,我们可以修改buf中的内容,但是并不能改变p指向常量区中的内容。