0

从这个网站 http://www.programmingsimplified.com/c-program-find-characters-frequency 他们有一个例子可以计算 a - z 但不计算 AZ 或空格或标准标点符号。

  while ( string[c] != '\0' )
  {
     /* Considering characters from 'a' to 'z' only */

     if ( string[c] >= 'a' && string[c] <= 'z' ) 
        count[string[c]-'a']++;

     c++;
  }

  for ( c = 0 ; c < 26 ; c++ )
  {
     if( count[c] != 0 )
4

2 回答 2

3

要计算字符串中的所有字符,请使用 anint a[256]并将字符串的字符用作数组的索引并递增:

int counts[256] = { 0 }; /* Initialize all elements to zero. */

while (string[c]) counts[(unsigned char)string[c++]]++;
于 2013-02-15T22:52:26.163 回答
2

我不确定我是否理解你的问题,但我担心在提问之前我没有看到任何尝试解决它。

int count[ 256 ] ; // - make sure you change your declaration from [ 26 ]!

while ( string[c] != '\0' )
{
   count[( unsigned char )string[c]]++;
   c++;
}

for ( c = 1 ; c < 256 ; c++ ) // no point to check c == 0
{
   if( count[c] != 0 )
于 2013-02-15T22:52:13.193 回答