Важное отличие способа вызова функции scanf от способа вызова функции printf заключается в том,

x или X — целое в шестнадцатеричном формате;

                        o или O — целое в восьмеричном формате.

Примечание. Для вывода чисел типа long и double необходим модификатор преобразования l, а для чисел типа short — модификатор h.

Если после знака % нет спецификации ширины поля, то для вывода чисел отводится столько знакомест, сколько требуется для вывода всех знаков этого числа (и знака «минус» для отрицательных чисел). Форматная строка для функции scanf выглядит аналогично, но если в ней встречаются символы, не относящиеся к спецификации формата, то они игнорируются.

Важное отличие способа вызова функции scanf от способа вызова функции printf заключается в том, что в качестве списка аргументов для scanf должны передаваться не сами переменные, а указатели на них. Для того чтобы получить значение указателя на переменную, применяется унарная операция & (не путайте с побитовой операцией логического И). Например, если требуется ввести значение переменной t в шестнадцатеричной системе счисления и переменной k — в десятичной системе счисления, то вызов функции scanf будет выглядеть следующим образом:

            scanf ( «%x%d», &t, &k);

Например:

#include <stdio.h>

void main()

{

    int  ret, i;

    float x;

    char  name [50];

    ret = scanf («%d %f %s», &i, &x, name);

    prinf («scanf() ВОЗВРАТИЛАЗНАЧЕНИЕ: %d ; %d  %f  %s\n», ret, i, x, name);

}

 

Допустим, мы ввели целое число «56», действительное число «6.3» и строку
«abcdefrew».

Результат выполнения программы:

 

scanf() ВОЗВРАТИЛА ЗНАЧЕНИЕ: 3;  56  6.300000 abcdefrew

 

Пример 1.

Ввести число в десятичной системе счисления и вывести в шестнадцатеричной и восьмеричной системах счисления, а также в виде соответствующего символа ASCII. Если код символа меньше 32 (в десятичной системе счисления), то вместо символа в кодировке ASCII следует напечатать точку.

 

main()

{

            int  x,  y;

            printf ( «Введите X: \n»);

            scanf ( «%d», &x);

            y = ( x > 32 )? x : ‘.  ;

            printf ( «\n Hex = %x \n Oct = %o \n ASCII = ‘%c’ \n», x,x,y);

}

 

Обратите внимание на седьмую строку программы:

            y = ( x > 32 )? x : ‘.  ;

Ссылка на основную публикацию
Adblock detector