Ваша функция s_trim
не вносит никаких изменений в массив str
и также ничего не возвращает. Любые изменения в указателе str
являются локальными для функции и не приводят к усечению входной строки.
Для обрезки вам необходимо иметь возвращаемое значение этой функции, которое даст измененный указатель.
char* s_trim(char *str)
{
char *end;
while(isspace((unsigned char)* str)) str++; // trim leading
end = str+strlen(str)-1;
while(end>str && isspace((unsigned char)* end)) end--;
*(end +1) = '\0';
return (str);
}
int main()
{
char *test = (char*) malloc(12*sizeof(char));
char * trimmed;
strcpy(test, " abc def "); // <2*spaces>+abc+<space>+def+<2*spaces>
trimmed = s_trim(test); // i'm going to use this to get "abc def"
printf ("Result = __%s__\n",trimmed);
free(test);
}