Главная » Статьи » Програмування » C [ Добавить статью ]

RUS Уроки по программированию на языке С (Разнесение проекта по несколько файлов.)

Разнесение проекта по несколько файлов.

Как Вы уже давно знаете, для включения текста из файла используется команда #include. Пора познакомиться с ней поближе. Эта команда является директивой препроцессора и имеет две формы записи:

#include <имя_файла>// Имя в угловых скобках.
 #include "имя_файла"// Имя в кавычках.

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

Начиная работать с языком C, мы сразу же столкнулись с необходимостью использования в программах средств ввода-вывода. Для этого в начале текста программы мы размещали директиву:

#include <iostream>

Выполняя эту директиву, препроцессор включает в программу средства связи с библиотекой ввода-вывода. Поиск файла iostream ведется в стандартных системных каталогах.

Заголовочные файлы оказываются весьма эффективным средством при модульной разработке крупных программ. Также, в практике программирования на С обычна ситуация, при которой, если в программе используется несколько функций, то удобно тексты этих функций хранить в отдельном файле. При подготовке программы пользователь включает в нее тексты используемых функций с помощью команд #include.

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

Пример программы.

Ввести с клавиатуры заканчивающееся точкой предложение, слова в котором отделены друг от друга пробелами. Записать каждое слово предложения в обратном порядке (инвертировать слово) и напечатать полученное предложение. Для простоты реализации ограничим длину вводимого предложения 80 символами. Тогда программа решения сформулированной задачи может быть такой:

Основной файл:

#include <iostream>
using namespace std;
// Файлйл написанный самостоятельно, содержащий 
// функцию соединения строк и 
// функцию инвертирования строк.ы
#include "mystring.h" 

void main()
{
 char slovo[81], sp[81], c = ' ', *ptr = slovo;

 sp[0] = '\0'; // Очистка массива для нового предложения.

 cout << "Enter string with point of the end:\n";
 do
 { 
 cin >> slovo ; // Читается слово из входного потока.
 invert(slovo); // Инвертировать слово.
 c = slovo[0];

 // Убрать точку в начале последнего слова.
 if (c == '.')
 ptr = &slovo[1];

 if (sp[0] != '\0')
 conc(sp," \0"); // Пробел перед словом.
 conc(sp,ptr); // Добавить слово в предложение.

 }while (c != '.'); // Конец цикла чтения.

 conc(sp,".\0"); // Точка o конце предложения.
 cout << "\n" << sp; // Вывод результата.
}

Заголовочный файл mystring.h:

void invert (char *e)
{
 char s;
 for (int m=0;e[m]!='\0';m++);
 for (int i=0,j=m-1;i < j;i++,j--)
 { 
 s = e[i];
 e[i] = e[j];
 e[j] = s; 
 }
}

void conc (char *c1, char *c2)
{
 for (int m=0;c1[m]!='\0';m++);
 // m - длина первой строки.
 for (int i=0; c2[i]!='\0';i++)
 c1[m+i]=c2[i];
 c1[m+i] = '\0';
}
Комментарий к коду.
  • В программе в символьный массив slovo считывается из входного потока (с клавиатуры) очередное слово.
  • sp - формируемое предложение, в конец которого всегда добавляется точка.
  • Переменная char c - первый символ каждого инвертированного слова.
  • Для последнего слова предложения этот символ равен точке.
  • При добавлении этого слова к новому предложению точка отбрасывается с помощью изменения значения указателя ptr.
  • Использованы директивы #include, включающие в программу средства ввода/вывода и тексты функций инвертирования строки invert() и конкатенации строк conc().
  • Обратите внимание, что длина массива - первого из параметров функции conc() должна быть достаточно велика, чтобы разместить результирующую строку.
  • Препроцессор добавляет тексты всех функций в программу из файла mystring.h и как единое целое передает на компиляцию.
Примечание: Кстати, для того, что бы добавить к проекту заголовочный файл, необходимо произвести все те же действия, что и при добавлении основного файла, но при выборе типа файла следует остановиться на шаблоне Header File (.h) 

Категория: C | Добавил: DEN-SHP (06.11.2012)
Просмотров: 875 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]