Unix Man (Справочное руководство)


SCANF(3S) - часть 2


/p>

Кодам преобразований d, u, o, x, i может предшествовать символ l или h, означающий, что соответствующий аргумент указывает на переменную типа long или short, а не int. Аналогично, кодам e, f, g может предшествовать символ l, означающий, что соответствующий аргумент указывает на переменную типа double, а не float. Для остальных кодов преобразований модификаторы l и h игнорируются.

Функция scanf завершается по концу файла, при исчерпании формата или при обнаружении в потоке ввода символа, противоречащего формату. В последнем случае символ-нарушитель остается непрочитанным в потоке ввода.

Функция scanf возвращает число успешно введенных и преобразованных величин; это число может оказаться нулем, если слишком рано обнаружилось несоответствие с форматом. Если ввод закончился без конфликтов и преобразований, результат равен EOF.

ПРИМЕРЫ


  1. В результате вызова

    nt n; float x; char name[50]; = scanf("%d%f%s", &i, &x, name);

    при наличии во входном потоке символов

    5 54.32E-1 Bill

будет присвоено: переменной n - значение 3, переменной i - значение 25, переменной x - значение 5.432, а в массив name будет занесено Bill\0.

  • После вызова

    nt i,j; float x; char name[50]; void)scanf("%i%2d%f%*d %[0-9]", &j, &i, &x,name);

    при наличии во входном потоке символов

    11 56789 0123 56a72

  • будет присвоено: переменной j - значение 9, переменной i - значение 56, переменной x - значение 789., последовательность 0123 будет пропущена, а в массив name будет занесено 56\0. Если после этого вызова последует вызов getchar [см. ], то будет прочитан символ a.

  • В результате вызова

    nt i, j, s, e; char name[50]; void)scanf("%i %i %n%s%n", &i, &j, &s, name, &e);

    при наличии во входном потоке

    x11 0xy johnson

  • будет присвоено: переменной i - значение 17, переменной j - значение 0, переменной s - значение 6, в массив name будет занесено xy\0, а переменной e присвоено значение 8. Таким образом, длина заполненной части массива name равна e - s = 2. При следующим за этим вызове getchar [см. ] будет прочитан пробел.

    СМ. ТАКЖЕ


    , , , , .

    ДИАГНОСТИКА


    Описанные функции возвращают значение EOF при исчерпании потока ввода, или число успешно введенных и преобразованных величин.

    СЮРПРИЗЫ


    Заключительные пробельные символы (включая перевод строки) остаются в потоке ввода непрочитанными, если только они не были явно затребованы форматом.




    Начало  Назад  Вперед



    Книжный магазин