Лекции.Орг


Поиск:




Категории:

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

 

 

 

 


Программа А.7. Функция Options




/* Служебная функция для извлечения флагов опций из командной строки. */

#include "EvryThng.h"

#include <stdarg.h>

 

DWORD Options(int argc, LPCTSTR argv[], LPCTSTR OptStr,...)

/* argv — командная строка. Параметры (опции), если они нужны, начинаются с символа '-' в argv[1], argv[2], ….

OptStr — текстовая строка, содержащая все возможные параметры, находящиеся во взаимно-однозначном соответствии с адресами булевских переменных в списке аргументов (...). Эти флаги устанавливаются тогда и только тогда, когда символ соответствующей опции встречается в argv[1], argv[2], …Возвращаемым значением является индекс (в argv) первого аргумента, указанного вслед за опциями. */

{

va_list pFlagList;

LPBOOL pFlag;

int iFlag = 0, iArg;

va_start(pFlagList, OptStr);

while ((pFlag = va_arg(pFlagList, LPBOOL))!= NULL && iFlag < (int)_tcslen(OptStr)) {

*pFlag = FALSE;

for (iArg = 1;!(*pFlag) && iArg < argc && argv[iArg][0] == '-'; iArg++) *pFlag = _memtchr(argv[iArg], OptStr[iFlag], _tcslen(argv[iArg]))!= NULL;

iFlag++;

}

va_end(pFlagList);

for (iArg = 1; iArg < argc && argv[iArg][0] == '-'; iArg++);

return iArg;

}

SkipArg.с

Эта функция обрабатывает командную строку, пропуская одно поле, отделенное пробельным символом. Впервые используется в программе timep (программа 6.2).

Программа А.8. Функция SkipArg

/* SkipArg.с

Пропуск одного аргумента командной строки – символы табуляции и пробела пропускаются. */

#include "EvryThng.h"

 

LPTSTR SkipArg(LPCTSTR targv) {

LPTSTR p;

p = (LPTSTR)targv;

/* Перейти к следующему символу табуляции или пробела. */

while (*р!= '\0' && *р!= TSPACE && *р!= TAB) p++;

/* Пропустить символы табуляции и пробела и перейти к следующему аргументу. */

while (*р!= '\0' && (*р == TSPACE || *р == TAB)) p++;

return р;

}

GetArgs.с

Эта функция просматривает строку, отыскивая слова, разделенные символами пробелов или табуляции, и помещает результат в массив строк, передаваемый функции. Эта функция может пригодиться для преобразования командной строки в массив argv[] и впервые используется в программе JobShell в главе 6. Функция Win32 CommandLineToArgW решает ту же задачу, но сфера ее применимости ограничивается символами Unicode.

Программа А.9. Функция GetArgs

/* GetArgs. Преобразует командную строку к виду argc/argv. */

#include "EvryThng.h"

 

VOID GetArgs(LPCTSTR Command, int *pArgc, LPTSTR argstr[]) {

int i, icm = 0;

DWORD ic = 0;

for (i = 0; ic < _tcslen(Command); i++) {

while (ic < _tcslen(Command) && Command[ic]!= TSPACE && Command [ic]!= TAB) {

argstr[i][icm] = Command[ic];

ic++;

icm++;

}

argstr[i][icm] = '\0';

while (ic < _tcslen(Command) && (Command[ic] == TSPACE || Command[ic] == TAB)) ic++;

icm = 0;

}

if (pArgc!= NULL) *pArgc = i;

return;

}


ПРИЛОЖЕНИЕ Б





Поделиться с друзьями:


Дата добавления: 2015-09-20; Мы поможем в написании ваших работ!; просмотров: 597 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Велико ли, мало ли дело, его надо делать. © Неизвестно
==> читать все изречения...

2524 - | 2183 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.008 с.