如何从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; } }