Описание функций Си



         

Scanf - часть 8


-Символ подавления присвоения (*) появляется в спецификации формата после знака процента %; те- кущее поле считывается, но не запоминается.

-Считано width символов (width - спецификатор ши- рины, положительное десятичное целое).

-Следующий считанный символ не может быть конвер- тирован при действующем формате (например, сим- вол A, если формат-десятичный).

-Следующий считанный символ входного поля отсутс- твует в "поисковом" наборе (или, наоборот, при- сутствует в инвертированном "поисковом" наборе).

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

Функции семейства ...scanf заканчивают свою рабо- ту при следующих ситуациях:

-Следующий по порядку символ входного поля не со- ответствует относящемуся к нему значащему симво- лу в строке формата.

-Следующий символ во входном поле - EOF.

-Строка формата исчерпана.

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

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

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

Если не было записано ни одного поля, возвращает- ся значение 0.

Переносимость scanf поддерживается на системах UNIX и определена в стандарте ANSI C. Определены у Кернигана и Рит- чи.

Смотрите также

#include

#include

int main(void) { char label[20]; char name[20]; int entries = 0; int loop,age; double salary; struct Entry_struct { char name[20]; int age; float salary; } entry[20]; /* ввести заглавие, как строку, длиной до 20 символов */ printf("Введите заглавие для диаграммы: "); scanf("%20s",label); fflash(stdin); /* сбросить входной поток, в случае ошибки */ /* ввести число элементов в виде целого */ printf("Сколько элементов (не > 20): "); scanf("%d",&entries); fflash(stdin); /* сбросить входной поток, в случае ошибки */ for(loop = 0; loop < entries; ++loop) { printf("Элемент %d\n",loop); /* ввести имя, только буквы в верхнем или нижнем регистре */ printf("Имя: "); scanf("%[A_Za-z]",entry[loop].name); fflash(stdin); /* сбросить входной поток, в случае ошибки */ /* ввести возраст, как целое число */ printf("Возраст: "); scanf("%d",&entry[loop].age); fflash(stdin); /* сбросить входной поток, в случае ошибки */ /* ввести размер зарплаты как float */ printf("Зарплата: "); scanf("%f",&entry[loop].salary); fflash(stdin); /* сбросить входной поток, в случае ошибки */ } /* ввести имя, возраст и зарплату как строку, целое и число с пла- вающей точкой, соответственно */ printf("Пожалуйста, введите свое имя, возраст и зарплату.\n"); scanf("%20s %d %lf",name,&age,&salary); /* напечатать введенные данные */ printf("\n\AТаблица %s\n",label); printf("Вычислена %s, возраст %d, $%15.2lf\n",name,age,salary); printf("-----------------------------------------------------\n"); for(loop = 0; loop




Содержание  Назад  Вперед