Вот функция, чтобы делать то, что вы хотите. Следует позаботиться о вырожденных случаях, когда вся строка является пробелом. Вы должны передать в выходной буфер и длину буфера, что означает, что вы должны передать в выделенный вами буфер.
void str_trim(char *output, const char *text, int32 max_len)
{
int32 i, j, length;
length = strlen(text);
if (max_len < 0) {
max_len = length + 1;
}
for (i=0; i<length; i++) {
if ( (text[i] != ' ') && (text[i] != '\t') && (text[i] != '\n') && (text[i] != '\r')) {
break;
}
}
if (i == length) {
// handle lines that are all whitespace
output[0] = 0;
return;
}
for (j=length-1; j>=0; j--) {
if ( (text[j] != ' ') && (text[j] != '\t') && (text[j] != '\n') && (text[j] != '\r')) {
break;
}
}
length = j + 1 - i;
strncpy(output, text + i, length);
output[length] = 0;
}
Операторы if в циклах, вероятно, можно заменить на isspace (text [i]) или isspace (text [j]) , чтобы сделать строки немного легче для чтения , Я думаю, что я установил их таким образом, потому что были некоторые символы, которые я не хотел проверять, но похоже, что я сейчас покрываю все пробелы: -)