Jestem nowicjuszem uczącym się C i próbującym zrozumieć poniższy kod z wykładu online. Skanuje ciąg znaków dla liczby całkowitej; jeśli napotkane zostaną znaki, sscanf się nie powiedzie.zachowanie sscanf/wartość zwracana
int n; char c;
if (sscanf(string, " %d %c", &n, &c) == 1)
//return the integer
else
// fail
Przeczytałem strony podręcznika systemowego dla sscanf i nadal mam wątpliwości dotyczące sprawdzenia wartości zwracanej i przyczyny działania tego kodu. Stanowią one, że "Te funkcje zwracają liczbę przypisanych elementów wejściowych".
Jeśli sscanf napotka tylko znaki, zapisuje je do & c ... ale w takim przypadku & n nie zostanie zapisane. W tym przypadku, myślałem, że wartość zwracana sscanf nadal będzie 1?
'sscanf' nie przeskoczy nad'% d' do zjedzenia '% c'. Jeśli nie napotka pierwszej liczby, zwróci 0. –
Z jakiegoś powodu fakt, że sscanf zrobił to ściśle w sekwencji (zgodnie z łańcuchem formatu) całkowicie mi umknął. Dzięki! – drjimmie1976