Mam fscanf do odczytu linii ustawienia z pliku konfiguracyjnego. Ustawienia te są ściśle ustalonym formacie, który wygląda jakfscanf i znak nowej linii
name1=option1;
name2=option2;
...
więc w zasadzie zrobić
fscanf(configuration,"%[^=]=%[^;];",name,option);
gdzie konfiguracja jest strumień i nazwa pliku i opcja programowania są bufory.
Problem polega na tym, że bufor nazwy zawiera znak nowej linii, którego nie chcę. Czy w "[^ ...]" został pominięty specyfikator formatu, aby pominąć znak nowego wiersza? W każdym razie, czy można go rozwiązać poprzez specyfikator formatu?
BTW: Połknięcie znak nowej linii pisząc ten
"%[^=]=%[^;];\n"
nie jest elegent myślę, że na znak nowej linii może się powtórzyć więcej niż jeden raz w dowolnym miejscu.
Jeśli pola 'nameN' nie mogą zawierać białych znaków, po prostu dodaj spację na początku ciągu formatu -' "% [^ =] =% [^;];" '- aby pominąć wiodące białe znaki. Jeśli to możliwe, musisz sam używać nowej linii z 'getchar()'. –
Przyjęta odpowiedź jest w każdym razie słuszna, jeśli chodzi o powtórzone znaki nowej linii, można użyć '% * [\ n]', aby odczytać dowolną liczbę '\ n'' bez ich zapisywania. – effeffe