Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

scanf - форматный ввод

Описание

      Это процедуры форматного ввода.  Многоточия обозначают
      аргументы (от 0 и более), которые являются указателями
      на переменные для ввода информации;
      fscanf   читает из входного потока fp.
      scanf    читает из stdin.
      sscanf   читает из указанного буфера buffer. Считывае-
               мые  литеры  преобразуются  в  соответствии с
               форматной строкой, и эти преобразованные зна-
               чения размещаются по аргументам-указателям.
      Аргументы должны  быть  указателями  на то, куда будут
      записываться значения.
      Форматная строка состоит из:
         1. Пробелов,  литер  табуляции  и новой строки, ко-
            торые вызывают  пропуск ввода  до  следующей, не
            'белой' (whitespace) литеры.
         2. Других литер,  кроме  литеры %,  которые "один в
            один" переправляются во ввод.
         3. Спецификаций  преобразования,  которые  выглядят
            следующим образом:
    ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
    _ '%'['*'][ширина поля][точность]литера преобразования _
    АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ
      Эта строка определяет,  каким образом вводимые символы
      должны  преобразовываться и записываться  по  соответ-
      ствующим аргументам-указателям. Преобразование продол-
      жается до первой неподходящей  входной  литеры или ис-
      черпания ширины поля.
      Символ '*' является флагом подавления присваивания. Он
      вызывает выполнение преобразования, но результат игно-
      рируется и для него не нужен соответствующий аргумент-
      -указатель.
      Если  число  аргументов-указателей меньше спецификаций
      преобразования, результат непредсказуем. Если же число
      аргументов-указателей больше, лишние указатели игнори-
      руются.
      Ширина поля (field_width)
      ДДДДДДДДДДДДДДДДДДДДДДДД
         Это последовательность десятичных цифр,  определяю-
         щая максимальное число литер в поле ввода.
      Точность (precision)
      ДДДДДДДДДДДДДДДДДДДД
         L или l (Нижний регистр L)
            Если 'l' используется с одной из (d, i, o, u, x)
            литер преобразования, то она означает, что аргу-
            мент является указателем на long, а не на int. l
            или L флаг,  при использовании (e) или (f) литер
            преобразования, означает,  что аргумент является
            указателем на double, а не на float.
         h  Аргумент является указателем на short.
      Литера преобразования (conv_char)
      ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
         К литерам преобразования относятся:
      d          Ожидается   ввод  целого  числа,  аргумент-
                 -указатель должен быть  указателем  на int.
      e,f,g,E,G  Ожидается ввод числа с плавающей  за пятой.
                 Формат числа такой же, как и в Cи.
                 Аргумент должен  быть указателем  на  float
                 (или double, если используется 'l' или 'L').
      i          Ожидается ввод целого числа. Если число на-
                 чинается с 0, оно воспринимается как восьме-
                 ричное.  Если число начинается с 0x или 0X,
                 оно шестнадцатиричное. Аргумент должен быть
                 указателем на int.
      b          Ожидается ввод  двоичного  числа.  Аргумент
                 должен быть указателем на целое.
      o          Ожидается ввод  восьмеричного числа.  Аргу-
                 мент должен быть указателем на int.
      x,X        Ожидается   ввод  шестнадцатиричного  числа
                 (адреса).  Аргумент  должен быть указателем
                 на int.
      p          Ожидается  ввод  шестнадцатиричного  числа.
                 Аргумент  должен быть указателем  на указа-
                 тель.
      u          Ожидается ввод  беззнакового  целого числа.
                 Аргумент должен быть указателем на unsigned.
      n          По указателю, заданному аргументом, записы-
                 вается число  литер,  считанных к этому мо-
                 менту при этом обращении к scanf().
      [          Ожидается  ввод  строки  литер.  Между  [ и
                 закрывающей ] должны быть литеры,  допусти-
                 мые в этой строке.  Если за скобкой [ сразу
                 следует литера^,  допустимыми литерами вво-
                 димой  строки  являются  все за исключением
                 перечисленных между ^ и ].  Аргумент должен
                 быть  указателем на строку.  В конце строки
                 добавляется 0.
      s          Ожидается  ввод строки литер. Аргумент дол-
                 жен быть  указателем  на строку.  Поле вво-
                 да заполняется до тех пор, пока не считает-
                 ся пробел или литера новой строки,  которые
                 не  являются  частью  поля  ввода.  К концу
                 строки добавляется 0.
      c          Ожидается ввод литеры. Аргумент должен быть
                 указателем на литеру. Если определена шири-
                 на поля (field_width), то считывается опре-
                 деленное  шириной  поля число литер и аргу-
                 мент в этом случае должен  быть  указателем
                 на массив литер, достаточный для размещения
                 результата.
      %          Соответствует вводу литеры %.
         Символы преобразования e, g и x  могут быть заглав-
         ными.  Другие же символы будут давать непредсказуе-
         мые результаты. Неподходящие литеры остаются непро-
         читанными из входного потока.  Нет прямого пути оп-
         ределения  того,  достигнуты ли точные соответствия
         или были подавления присваиваний, кроме использова-
         ния символа преобразования %n.

Использование

      #include <stdio.h>
      int scanf(char *format,...);                /* ANSI */
      int fscanf(FILE *fp, char *format,...);     /* ANSI */
      int sscanf(char *buffer, char *format,...); /* ANSI */

Возвращаемое значение

      Возвращается число присвоенных элементов ввода, исклю-
      чая преобразования с подавленным  присваиванием.  Если
      встречается конец  файла  до того,  как были выполнены
      какие-либо присваивания и возникли какие-либо конфлик-
      ты  (формата  и  ввода),  возвращается  значение  EOF.
      Scanf() обычно завершает работу, когда достигает конца
      строки формата.

Пример

      #include <stdio.h>
      main()
      {
        unsigned int result, val;
        printf("Введите десятичное число:");
        result = scanf("%i", &val);
        printf("The decimal number [%d] is [%4x]
                    hexadecimal", val, val);
      }

Рекомендация

      Смотрите также printf, fscanf, sscanf

оглавление

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог