Функция trim для C и C++
Написал microsin   
16.10.2009

К сожалению, в стандартной библиотеке C нет функций для удаления из строки по краям неотображаемых символов (пробелов, табуляции и т. д.). В этой статье рассмотрены примеры кода для таких функций. Код взят со странички http://www.wilsonmar.com/1strings.htm.

void trim(char *s)
{
     // удаляем пробелы и табы с начала строки:
     int i=0,j;
     while((s[i]==' ')||(s[i]=='\t')) 
     {
          i++;
     }
     if(i>0) 
     {
          for(j=0;j<strlen(s);j++) 
          {
              s[j]=s[j+i];
          }
          s[j]='\0';
     }

     // удаляем пробелы и табы с конца строки:
     i=strlen(s)-1;
     while((s[i]==' ')||(s[i]=='\t')) 
     {
          i--;
     }
     if(i<(strlen(s)-1)) 
     {
          s[i+1]='\0';
     }
}

// Еще набор функций, использующий оператор &&:
void rtrim( char * string, char * trim )
{
     // делаем трим справа
     int i;
     for( i = strlen (string) - 1; 
           i >= 0 && strchr (trim, string[i]) != NULL;
           i-- )
     {  
         // переставляем терминатор строки 
         string[i] = '\0';
     }
}

void ltrim( char * string, char * trim )
{
     // делаем трим слева
     while ( string[0] != '\0' && strchr ( trim, string[0] ) != NULL )
     {
         memmove( &string[0], &string[1], strlen(string) );
     }
}

Последнее обновление ( 16.10.2009 )