我有一个带有额外空格的字符串,例如:
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);
我是一名优秀的程序员,十分优秀!