русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Функции для форматного вывода данных


Дата добавления: 2013-12-23; просмотров: 595; Нарушение авторских прав


Void main ()

I, j, ui, f, s1, s2, c1, c2, n1 ) ;

Float f;

Unassigned ui;

Int I, j, n1;

Void main ()

Пример программы для пересылки значений различных

Fclose (f);

Void main ()

{ int a, e ;

float b, d; // ft – инициализированная строка форматов:

char c[7], g, * ft = “ a = %d b = %f c = %s%f%d%c”

f = fopen ( “8scanf.dat” , “r” );

fscanf (f, ft, &a, &b, c, &d, &e, &g);

}

Содержимое файла “8scanf.dat” – с исходными данными:

а = 123, в = 2.5, с = asdfg 3.7 25k

В приведенном примере программы строка форматов включает подстроки: а = , Ь = , с = . Эти подстроки при считывании данных из файла игнорируются. В результате выполнения программы переменные списка аргументов функцииfscanfполучат следующие значения: а = 123, в = 2.5, с = “asdfg”, d = 3.7 e =25, g = ‘k’.

типов из строки с помощью функцииsscanf

(пример старой версии)

{ char str [ ] = “Из втой строки читаются: "

"целое: i = -123, "

"шестнадцатеричное целое: j = 0x10, "
"целое без знака: ui - 65535, "
"значение с плавающей точкой: f = -123е-2, "
"несколько строк и символов . "

// n1 - количество введенных значений

{char s1[30], s2[30], c1, c2;

n1 = sscanf (str, “%*25c %*6s i = %d, %*29c%i, %*21c%u, %*33c%f, %s%s %c %*8s%c”, &i, &j, &ui, &f, s1, s2, &c1, &c2 );

printf ( “\ni = %d, j = %i, ui = %u, f =%.3f, “

“\ns1 %s, s2 = %s, c1 = %c, c2 = %c n1 = %d\n”,

}

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

i = -123, j = 16, ui = 65535, f = -1.230, s1 = несколько, s2 = строк, с1 = и, с2 =., n1 = 8

В некоторых случаях целесообразно вводить данные из файла в ОП по­строчно с помощью функцииfgets, а затемраспаковыватьих с помощью функ­цииsscanf.



Например:

fgets (str, 50, fid) ; // ввод данных в строку str

sscanf (str, “%d%f%6c%f”, &a, &b, st, &c) ; // распаковка

В силу определенных особенностей функцийsscanfиfscanf возможны слу­чаи, когда значения типаfloatилиdoubleвводятся неверно, например, в эле­менты массива арифметических данных или в элементы массива структур. В этом случае избежать ошибки можно, используя промежуточную скалярную переменную соответствующего типа (floatилиdouble). Надо сначала ввести значение в эту скалярную переменную, а затем переслать ее в элемент масси­ва структур. Пример фрагмента программы для ввода значений из файла в строку с последующей 'распаковкой' этой строки приведен на далее.

(пример старой версии)

#define PR struct data;

PR {int nb, gv; char ts [8], float gr; );

float skl; //skl - скаляр

PR s[5]; //s – массив структур типа PR

{ ... for ( i = 0 ; i <= 5; i++ )

{fgets ( str, 55, fid ) ;

sscanf ( str, “%d%d6c%f” ,

&s[ i ] . nb, &s [ i ].gv, s [ i ].ts, &skl); // - ввод значения в skl

s [ i ].gr = skl; // - пересылка skl в s [ i ].gr - элемент массива s

...}

В этом примере с помощью функцииsscanfзначение типаfloatвводится сначала в скалярную переменную skl, а затем пересылается в s [ i ].gr - в элемент массива структур. Для других типов данных этого не требу­ется.

Форматный вывод данных осуществляется с помощью функцийprintf,fprintf, sprintf. Правила их использования идентичны.

Прототип функцииprintf:

int printf ( char * format [ , arg ... ] ) ;

Функцияfprintfвыводит в стандартный выводной потокstdout(на экран) значения, определенные ее аргументами. Функция имеет переменное количе­ство параметров. Значение первого параметраformatопределяет адрес строки, которая управляет интерпретацией выводимых значений. Аргументы опреде­ляют имена переменных, значения которых должны быть выведены.



<== предыдущая лекция | следующая лекция ==>
Далее приведен пример программы для ввода значений различных типов из файла. | В квадратных скобках указаны необязательные элементы формата.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.003 сек.