本文介绍了如何从字符串中删除多余的空格用C的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有有一个多余的空格串的字符串,例如:

I have an string that have an extra spaces string, for example:

char * s = "  foo    baa       ";

我想这CONVER为:

I want to conver it to:

富咩

我已经写了这个功能:

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 变量值一个空字符串。可能有人会指出我的错误?提前致谢。

but it given for me an empty string from ret variable value. someone may point out my mistake? thanks in advance.

推荐答案

正在递增 RET 在你的同时,存储原始地址或使用下标来访问不同的字符 RET

You are incrementing ret in your while, store the original address or use subscript to access different chars of ret.

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

这篇关于如何从字符串中删除多余的空格用C的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-22 00:35