C中strlen()的一个问题

来源:百度知道 编辑:UC知道 时间:2024/06/15 11:53:14
strlen测定首尾含空格的字符串时空格计长度吗
我下边写的这个去除字符串前后空格函数哪有问题
char *lqtrim(char *in_string)
{
char *p,*q;
char *out_string;
int i,j;
i=strlen(in_string);
q = in_string+i;
p = in_string;
while(*p)
{
*p++;
if(*p != 32)
break;
}
while(*q)
{
*q--;
if(*q !=32)
break;
}
j=*q-*p;
memcpy(out_string,p,j);
strcpy(in_string,out_string);
return(in_string);
}

strlen是计算从字符串地址开始,一直到'\0'的长度(不算‘\0’),你的说的空格算是字符串长度。

char *lqtrim(char *in_string)
{
char *p,*q;
char *out_string;
int i,j;
i=strlen(in_string);
q = in_string+i-1;
p = in_string;
while(*p)
{
if(*p != 32)
break;
p++;
}
while(*q)
{
if(*q !=32)
break;
q--;
}
j=q-p+1;
/*
memcpy(out_string,p,j);
strcpy(in_string,out_string);
*/
q=in_string;
for(i=0;i<j;i++)
{
*q++=*p++;
}
*q='\0';
return(in_string);
}

算的,只有遇到 \0 操作符时,才认定字符串结束。。。

记,直到遇到\0为止