Итак, моя задача - заполнить мою функцию для работы с тестовым драйвером, который передает его случайную строку во время каждого прогона. Для этой функции я должен преобразовать первый символ каждого слова в капитал, а все остальное должно быть ниже.Преобразование cstring в camelcase
В основном это работает, но проблема я имею с моим кодом, что он не будет капитализировать самый первый символ, и если есть период перед словом, как:
.word
«w» в этом случае будет оставаться ниже.
Вот мой источник:
void camelCase(char line[])
{
int index = 0;
bool lineStart = true;
for (index;line[index]!='\0';index++)
{
if (lineStart)
{
line[index] = toupper(line[index]);
lineStart = false;
}
if (line[index] == ' ')
{
if (ispunct(line[index]))
{
index++;
line[index] = toupper(line[index]);
}
else
{
index++;
line[index] = toupper(line[index]);
}
}else
line[index] = tolower(line[index]);
}
lineStart = false;
}
Я бы сказал, что эта логика слишком сложна, учитывая задание ... –
Используйте больше булевых флагов. Не переходите к следующему индексу, иначе вы будете писать за конец строки. – kay
Евгений, я знаю. Я бы не был здесь, если бы мой код был совершенным. – RyeMan