我编写了以下2个ltrim函数(从字符串左侧删除空格的函数):
1.(把这段代码放在这里不能得到这样的代码作为答案)
void ltrim(char * str, int size)
{
char const *start = str;
char const *end = start + size;
for(;*start && (*start==' ' || *start=='\n' || *start=='\r' || *start=='\t');++start);
while(start != end)
{
*str = *start;
++start;
++str;
}
*str='\0';
}
Run Code Online (Sandbox Code Playgroud)
2.
void ltrim(char * str, int size)
{
char const *start = str;
char const *end = start + size;
for(;*start && (*start==' ' || *start=='\n' || *start=='\r' || *start=='\t');++start);
memcpy(str, start, end-start);
*(str + (end - start)) = '\0';
}
Run Code Online (Sandbox Code Playgroud)
第二版安全吗?
PS我已经尝试过它可以工作,但不确定memcpy在这种情况下是否安全.