[英]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.