fscanf(stream, "%42[^\n]", buffer);
является эквивалентом fgets (buffer, 42, stream). Вы не можете заменить 42 на *, чтобы указать длину буфера в аргументе (как вы можете сделать в printf), его значение состоит в том, чтобы подавить присваивание. Так
fscanf(stream, "%*[^\n]%*c");
читать до (и включается) следующий символ конца строки.
Любой спецификатор преобразования, кроме [, c и n, начинается с пропуска пробелов.