2012-03-12 109 views
0

我有一個多餘的空格字符串,例如一個字符串:我想這CONVER到如何從字符串中刪除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變量值。有人可能會指出我的錯誤?提前致謝。

回答

3

您正在遞增ret,存儲原始地址或使用下標訪問ret的不同字符。在C + +

// snip 
    char * ret = malloc(strlen(*src) + 1); 
      assert(ret != NULL); 
    char * ret_start = ret; 
    //snap 
    printf("ret_start = %s\n", ret_start); 
+0

1。循環結束後,'ret'指向終止空字符。 – 2012-03-12 20:26:56

+0

謝謝!工作正常。你有提高這個C代碼的提示嗎? – user834697 2012-03-12 20:49:28

+0

@CarlNorum:錯字。我在我的真實代碼中做到了。 – user834697 2012-03-12 20:50:48

0

其他幼稚溶液(可以容易地改變至c代碼)----- :)

最初count=0str - >你的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; 
     } 
} 
相關問題