使用C语言计算和获得字符串中除空串外的内容及个数

这个模型也很简单,参数里面一个是方法计算非空串个数,一个是返回非空串的内容。

主要还是接口的封装设计,要调用函数获得内容,就要把接口设计成一级指针的形式。除此之外,还要注意是参数是在主调函数里面分配内存。

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指向常量区中的内容。

你可能感兴趣的:(使用C语言计算和获得字符串中除空串外的内容及个数)