/
というC文字列の出現回数をどのように数えることができますか?C文字列内の文字 '/'の出現回数をどのように数えることができますか?
私はこれを行うことができます:
int countSlash(char str[])
{
int count = 0, k = 0;
while (str[k] != '\0')
{
if (str[k] == '/')
count++;
k++;
}
return count;
}
をしかし、これはエレガントな方法ではありません。どのようにそれを改善するための任意の提案?私は簡潔のために簡潔を推奨するものではないことを追加する必要があります、と私はいつも明確な表現を選ぶだろう、他のすべてのものが等しい
ptr = str;
while ((ptr = strchr(ptr '/')) != NULL)
count++, ptr++;
:
あなたのものは十分に上品です。 –
主な批判は、(a)それが渡される文字列を変更しないことを約束する 'int countChar(char const * str、char c)'と比較して、 (b)は、アスタリスク、ブランクなどをカウントするために使用することができ、本質的に効率の低下はありません。単純な関数 'int countSlash(char const * str){return countChar(str、 '/');}を書くことができます。 } 'もしあなたが実際にあまり一般的でないインターフェースを望むならば。インライン展開などが有効になっていると、コンパイラが最適化することができます。 –
優雅さは、いろいろな形である可能性があります。それは最短か、最も読みやすいか、または最も簡単に理解されるかもしれません。また、最も読みやすいものは、他の人にはほとんど読めないものになる可能性があります。したがって、「エレガンス」は主観的な考えです。たぶんスピードの点で最も効率的な方法を求めてください。 – ChinoCarloSedilla