Ваша функция не имеет смысла и имеет неопределенное поведение.
Например, переменная characterHolder
не была инициализирована и добавлена в указатель finalList[i]
char characterHolder; // <===
char* finalList[strlen(wordList)];
char* delimeter = wordList;
int i = 0;
do
{
finalList[i] += characterHolder; // <===
//….
Если вы необходимо удалить лишние пробелы из строки, включая ее начальные и конечные пробелы, тогда функция может выглядеть так, как показано в демонстрационной программе ниже.
#include <stdio.h>
#include <ctype.h>
char * remove_duplicate_spaces( char *s )
{
char *src = s, *dsn = s;
while ( isspace( ( unsigned char )*src ) ) ++src;
do
{
char c = *src;
if ( isspace( ( unsigned char )c ) ) c = ' ';
if ( c == ' ' )
{
while ( isspace( ( unsigned char ) *++src ) );
if ( *src )
{
*dsn++ = c;
}
}
*dsn++ = *src;
} while ( *src++ );
return s;
}
int main(void)
{
char s[] = "\t\tIt is\t\ta very\nlong\nstring.\t\t";
printf( "\"%s\"\n", s );
printf( "\"%s\"\n", remove_duplicate_spaces( s ) );
return 0;
}
Выходные данные
" It is a very
long
string. "
"It is a very long string."