私の仕事は、毎回の実行中にランダムな文字列を送るテストドライバで動作するように自分の関数を記入することです。この機能のためには、すべての単語の最初の文字を大文字に変換しなければならず、その他はすべて低くする必要があります。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