Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Создание библиотеки

Читайте также:
  1. I. Создание Энергетического и Духовного Тел
  2. Автоматическое создание запросов с помощью мастеров
  3. Алгоритм 2.33. Создание нового фильтра
  4. Библиотеки с адресами.
  5. В период инерционной фазы идет взаимное подчинение людей друг другу, происходит образование больших государств, создание и накопление материальных благ.
  6. В. В. Путин и "Единая Россия": мы обеспечим создание задела для построения в нашей стране национал-социалистического общества
  7. Воссоздание мгновенного "бесплатного тепла" в зонах раздражений - у поверхности кожи и в области больных клеток.

 

Библиотека у нас будет иметь два исходных файла: complex.h и complex.c

/*

complex.h

*/

typedef struct

{

double a,b;

} complex_t;

complex_t mul(complex_t x, complex_t y);

/*

complex.c

*/

#include "complex.h"

complex_t mul(complex_t x, complex_t y)

{

complex_t t;

t.a = x.a * y.a - x.b * y.b;

t.b = x.a * y.b + x.b * y.a;

return t;

}

Пример использования библиотеки

 

Теперь несложно использовать эту библиотеку.

 

Для этого нужно:

добавить в заголовок c/cpp-файла строчку #include <complex.h>;

сделать так, чтобы компилятор находил complex.h;

сделать так, чтобы сборщик (linker) находил файл библиотеки complex.

/*

test_complex.c

*/

#include <stdio.h>

#include "complex.h"

int main()

{

complex_t x = {1,2};

complex_t y = {3,4};

complex_t z = mul(x,y);

printf ("z = (%lf, %lf)\n", z.a, z.b);

return 0;

}

8.

эта ф-ция читает строку и стандартного потока ввода stdin. читает до символа перевода каретки. и заменяет этот символ, символом конца строки

В стандартной библиотеке имеется программа ввода fgets, аналогичная программе getline, которой мы пользовались в предыдущих главах.

char *fgets(char *line, int maxline, FILE *fp)

Функция fgets читает следующую строку ввода (включая и символ новой строки) из файла fp в массив символов line, причем она может прочитать не более MAXLINE-1 символов. Переписанная строка дополняется символом '\0'. Обычно fgets возвращает line, а по исчерпании файла или в случае ошибки - NULL. (Наша getline возвращала длину строки, которой мы потом пользовались, и нуль в случае конца файла.)

Функция вывода fputs пишет строку (которая может и не заканчиваться символом новой строки) в файл.

int fputs(char *line, FILE *fp)

Эта функция возвращает EOF, если возникла ошибка, и неотрицательное значение в противном случае. Библиотечные функции gets и puts подобны функциям fgets и fputs. Отличаются они тем, что оперируют только стандартными файлами stdin и stdout, и кроме того, gets выбрасывает последний символ '\n', a puts его добавляет.

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

/* fgets: получает не более n символов из iop */

char *fgets(char *s, int n, FILE *iop)

{

register int c;

register char *cs;

cs = s;

while (--n > 0 && (с = getc(iop))!= EOF)

if ((*cs++ = c) == '\n')

break;

*cs= '\0';

return (c == EOF && cs == s)? NULL: s;

}

/* fputs: посылает строку s в файл iop */

int fputs(char *s, FILE *iop)

{

int c;

while (c = *s++)

putc(c, iop);

return ferror(iop)? EOF: 0;

}

Стандарт определяет, что функция ferror возвращает в случае ошибки ненулевое значение; fputs в случае ошибки возвращает EOF, в противном случае - неотрицательное значение.

С помощью fgets легко реализовать нашу функцию getline:

/* getline: читает строку, возвращает ее длину */

int getline(char *line, int max)

{

if (fgets(line, max, stdin) == NULL)

return 0;

else

return strlen(line);

}

 

9.

В стандарте языка для ввода используются две библиотечные функции scanf() и gets(). Чаще используется функция gets().


Дата добавления: 2015-07-26; просмотров: 78 | Нарушение авторских прав


Читайте в этой же книге: Функция gets(). 2 страница | Функция gets(). 3 страница | Функция gets(). 4 страница | Функция gets(). 5 страница | Функция gets(). 6 страница | Функция gets(). 7 страница | Целый тип данных | Указатели | Инициализация данных | Структуры |
<== предыдущая страница | следующая страница ==>
Структура программы.| Функция gets(). 1 страница

mybiblioteka.su - 2015-2024 год. (0.007 сек.)