Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Работа с файлами (С) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ подскажите плз функцию с неограниченным количеством параметров http://www.cyberforum.ru/cpp-beginners/thread150904.html
Написать программу, которая реализует функцию с неограниченным количеством параметров, организовывающую форматированный вывод на экран. Иначе говоря, от Вас требуется попробовать создать свою версию...
C++ даны три кв. матрицы, нужен вектор Даны три квадратные матрицы А, В и С порядка n (n<=10). Получить вектор Х, элементами которого являются суммы элементов исходных матриц. Напишите полностью программу, плиз, с комментариями ... http://www.cyberforum.ru/cpp-beginners/thread150897.html
Поиск вершин квадрата с записью в файл C++
Даны координаты двух вершин (x1,y1) и (x2,y2) некоторого квадрата. Необходимо найти возможные координаты других его вершин. -Ввод из файла(построчно): 1) x1,y1 2) x2,y2 -Вывод: точки в порядке...
одномерный масив... C++
Здравствуйте помогите пожалйста...в одномерном массиве сделать так чтоб все четные заменялись на 0, а не четные на 1.....и объясните каждый шаг проги....
C++ Зачем часто писать std::, если можно один раз using namespace std? http://www.cyberforum.ru/cpp-beginners/thread150880.html
зачем часто писать std:: если можно один раз using namespace std?
C++ this это адресс объекта, а *this это сам объект. я всё правельно понял? this это адресс объекта, а *this это сам объект. я всё правельно понял? подробнее

Показать сообщение отдельно
easybudda
Модератор
Эксперт CЭксперт С++
9632 / 5580 / 948
Регистрация: 25.07.2009
Сообщений: 10,714
03.07.2010, 13:47
Цитата Сообщение от Egeni Посмотреть сообщение
объясните пожалуйста вот это "%[^\n]%*c"
А в справочнике описание функции scanf() посмотреть - не?
Г. Шилдт "Послный справочник по С"
Использование набора сканируемых символов

Функция scanf() поддерживает спецификатор формата общего назначения, называемый набором сканируемых символов (scanset). Набор сканируемых символов представляет собой множество символов. Когда scanf() обрабатывает такое множество, то вводит только те символы, которые входят в набор сканируемых символов. Читаемые символы будут помещаться в массив символов, который указан аргументом, соответствующим набору сканируемых символов. Этот набор определяется следующим образом: все те символы, которые предстоит сканировать, помещают в квадратные скобки. Непосредственно перед открывающей квадратной скобкой должен находиться знак %. Например, следующий набор сканируемых символов дает указание scanf() сканировать только символы X, Y и Z:

%[XYZ]

При использовании набора сканируемых символов функция scanf() продолжает читать символы, помещая их в соответствующий массив символов, пока не встретится символ, не входящий в этот набор. При возвращении из scanf() в массиве символов будет находиться строка, состоящая из считанных символов, причем эта строка будет заканчиваться символом конца строки. Чтобы увидеть, как это все работает, запустите следующую программу:

C
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
 
int main(void)
{
  int i;
  char str[80], str2[80];
 
  scanf("%d%[abcdefg]%s", &i, str, str2);
  printf("%d %s %s", i, str, str2);
 
  return 0;
}
Введите 123abcdtye, а затем нажмите клавишу <ENTER>. После этого программа выведет 123 abed tye. Так как в данном случае 't' не входит в набор сканируемых символов, то scanf() прекратила чтение символов в переменную str сразу после того, как встретился символ 't'. Оставшиеся символы были помещены в переменную str2.

Кроме того, можно указать набор сканируемых символов, работающий с точностью до наоборот; тогда первым символом в таком наборе должен быть ^. Этот символ дает указание scanf() принимать любой символ, который не входит в набор сканируемых символов.

В большинстве реализаций для указания диапазона можно использовать дефис. Например, указанный ниже набор сканируемых символов дает функции scanf() указание принимать символы от А до Z:

%[A-Z]

Следует обратить внимание на такой важный момент: набор сканируемых символов чувствителен к регистру букв. Если нужно сканировать буквы и на верхнем, и на нижнем регистре, то их надо указывать отдельно для каждого регистра.


Подавление ввода

scanf() может прочитать поле, но не присваивать прочитанное значение никакой переменной; для этого надо перед литерой-спецификатором формата поля поставить звездочку, *. Например, когда выполняется оператор

scanf("%d%*c%d", &x, &y);

можно ввести пару координат 10,10. Запятая будет прочитана правильно, но ничему не будет присвоена. Подавление присвоения особенно полезно тогда, когда нужно обработать только часть того, что вводится.
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru