如何只删除字符串中的第一个空格或制表符?
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"
答案 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';
}