Я написал следующие 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';
}
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';
}
Безопасна ли вторая версия?
PS Я пробовал, и это работает, но я не уверен, что memcpy безопасен в этом случае.