[英]how to remove extra spaces from string in C
我有一个带有多余空格的字符串,例如:
char * s = " foo baa ";
我想将其转换为:
foo baa
我写了这个函数:
void trim (char ** src)
{
char * p = strdup(* src);
char * ret = malloc(strlen(*src) + 1);
assert(ret != NULL);
char * token;
token = strtok(p, " \t");
while( NULL != token ) {
while (*token) {
*(ret ++) = *(token ++);
}
token = strtok(NULL, " \t");
}
printf("ret = %s\n", ret);
}
但是它为我提供了一个来自ret
变量值的空字符串。 有人可能会指出我的错误? 提前致谢。
您正在增加ret
的时间,存储原始地址或使用下标访问ret
不同字符。
// snip
char * ret = malloc(strlen(*src) + 1);
assert(ret != NULL);
char * ret_start = ret;
//snap
printf("ret_start = %s\n", ret_start);
C ++中的其他幼稚解决方案(可以轻松更改为C代码)----- :)
最初count=0
并str
>您的c ++字符串
for(i=0;i< str.size();i++)
{
if(str[i]!=' ')
{
str[j++]=str[i];
count=0;
}
else if(str[i]==' '&&count==0)
{
str[j++]=str[i];
count =1;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.