0

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

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"

4

1 回答 1

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';
}
于 2013-11-06T15:41:28.327 回答