108______________________________Часть II. Программирование на C++

void ConvertInternalNameToFirstLast(char *string; char *result) (

char *p; // *p сканирует исходную строку

// Если функция обнаруживает ошибку, то в качестве // результата возвращает пустую строку. •"result = '\0' ;

// Сканируем строку до первой открывающей скобки, т. е. // все неверные ведущие символы игнорируются. while (*string && *string != '(') (

string++;

)

// Если открывающая скобка не найдена, то возвращаем // пустую строку.

if (*string == '\0') return;

»

// Пропускаем открывающую скобку — она не входит // в результат.

р = ++string;

// Ищем первую запятую или закрывающую скобку. // Скобку включаем в поиск, чтобы отловить однословные // имена типа Madonna. while (*p && *р != ',' && *р != ')') (

р++;

}

// Если ни закрывающая скобка, ни запятая не найдены, // возвращаем пустую строку. if (*р == '\0') return;

if (*p == ') ') {

//В случае однословного имени копируем исходную // строку в результирующую с первого символа до // последнего перед закрывающей скобкой. while (*string && *string != ')') {

*result++ = *string++;

» }

else {

// В случае имени с фамилией опускаем запятую и // следующие за ней пробелы. р++;