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 {
// В случае имени с фамилией опускаем запятую и // следующие за ней пробелы. р++;