簡體   English   中英

如何從C中的字符串中刪除多余的空格

[英]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=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;
        }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM