如何删除字符串中的第一个空格?语言C

时间:2013-11-06 15:39:23

标签: c string

如何只删除字符串中的第一个空格或制表符?

char* DelFistSpace(char* s){
    int i,k=1;
    char * out=s;
    for(i=0;s[i]!='\n';i++)
        if((s[i]!=' ' && s[i]!='    ')  || k==0){
            out[i]=s[i];
            k=0;
        }
        out[i]='\0';
        puts(out);
        return out;
}

例如:DelFistSpace("(space)(space)(space)a a");

预期:"a a"

1 个答案:

答案 0 :(得分:2)

如果需要删除动态分配的内存,假设客户端代码将跟踪原始指针,您可以简单地使用

char* SkipLeadingSpaces(char* s){
    while (isspace(*s)) {
        s++;
    }
    return s;
}

如果你想继续在客户端代码中使用原始指针,只是没有前导空格,你可以试试像

void RemoveLeadingSpaces(char* s){
    int trim = 0;
    char* trimmed = s;
    while (isspace(*s)) {
        s++;
    }
    for (; *s; s++) {
        *trimmed++ = *s;
    }
    *trimmed = '\0';
}