Код пропускает только пробелы, а не общий пробел (который включает в себя вкладки, новые строки и т. Д.). Таким образом, более общее решение будет использовать isspace()
из #include <ctype.h>
(или вы будете использовать «пробелы» или «пробелы» вместо «пробелы»).
Если серьезно, вы обнаружите, где находится первое непустое, но вы не сообщаете об этом вызывающей функции. Помните, что значения передаются по ссылке, включая указатели. Вам нужно будет передать указатель на указатель (и внести другие изменения в код), чтобы вернуть измененное значение через список аргументов. Это проще сделать:
static char *find_first_non_white_space(char *line)
{
while (isspace((unsigned char)*line))
line++;
return line;
}
Или с индексами:
static char *find_first_non_white_space(char *line)
{
int i = 0;
while (isspace((unsigned char)line[i]))
i++;
return &line[i];
}
Приведение необходимо, если char
имеет тип signed
, как в некоторых системах.