字符串学习之去除头尾空格+接口设计
1,计数字符串个数,被调函数按需分配内存,将处理后的字符串储存在分配的内存,返还该内存的首地址
intfunction(char*source,char**rec_mem)
因为内存是被调函数申请,因此可以节约控制内存的使用;
不好的地方是,在主调内存中可能造成内存泄露
intclear(char*string_in,char**string_after)//接口设计:一级指针输入源字符串,分配新空间存放后,二级指针返还地址{//校验intcount=0;intret=0;if(string_in==NULL){ret=-1;printf("err:string_in==NULL\n");returnret;}char*str=string_in;char*str_rec;//计数while(*(str)!='\0'){if(*(str)!=''){count++;}str++;}str=string_in;//分配内存*string_after=(char*)malloc(sizeof(count+1);str_rec=*string_after;//处理,写入到新分配的内存while(*(str)!='\0'){if(*str!=''){*str_rec=*str;str_rec++;}str++;}//末尾添加结束*str_rec='\0';returnret;}
2,主调函数提供源字符串,输出区内存块
intfunction(char*source_str,char*out_str_mem)
除外空格和结束符,一律转存,内存块末尾添加结束符
intdislodge_blank_from_str(char*source_str,char*output_buffer){char*p=source_str;char*r=output_buffer;if(source_str==NULL){printf("err:source_str==NULL\n");return-1;}if(output_buffer==NULL){printf("err:output_buffer==NULL\n");return-1;}inti=0;chartemp[200]={0};while((*p)!='\0'){if((*p)!=''){temp[i]=(*p);i++;}p++;}temp[++i]='\0';i=0;while(temp[i]!='\0'){(*r++)=temp[i++];}*(++r)='\0';return0;}
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。