在C中初始化字符串数组并计算内部字母数

时间:2015-07-10 22:09:06

标签: c

我找到了这个例子

int SizeofCharArray(char *phrase)
{
  int size = 0;

  int value = phrase[size];

  while(value != 0)
  {
       value = phrase[size];
       size++;

  };

  //printf("%i%s", size, "\n");

  return size;
}

here

但是如何使用纯C计算字符串数组中的字母数?即使我不明白如何初始化字符串数组?!

谢谢!

4 个答案:

答案 0 :(得分:1)

发布的代码质量很差。函数的名称SizeofCharArray与描述不匹配,计算字符串数组中的字母数

如果要返回数组中的字符数,请使用:

int SizeofCharArray(char *phrase)
{
   int size = 0;
   char* cp = phrase;

   while( *cp != '\0')
   {
      size++;
      cp++;
   };

   return size;
}

如果要返回数组中的字母数,请使用:

int isLetter(char c)
{
   return (( c >= 'a' && c <= 'z' ) || ( c >= 'A' && c <= 'Z' ));
}

int GetNumberOfLetters(char *phrase)
{
   int num = 0;
   char* cp = phrase;

   while( *cp != '\0')
   {
      if ( isLetter(*cp) )
      {
         num++;
      }
      cp++;
   };

   return num;
}

答案 1 :(得分:0)

这将计算c字符串中字母字符的数量:

#include <ctype.h>

int numberOfLetters(char *s)
{
    int n = 0;
    while (*s)
        if (isalpha(*s++))
            n++;
    return n;
}

如果您想要实际的字符数,计算空格和数字等字符,只需使用strlen(s)中的string.h

答案 2 :(得分:0)

要查找C字符串的长度,您可以使用strlen()函数

    #include<string.h>

    char str[]="GJHKL";
    const char *str1="hhkjj";
    int len1=strlen(str)<<"\n";
    int len2=strlen(str1);

答案 3 :(得分:0)

这不是特别好C.我没有给你一个char数组的大小 - 这是不可能确定你是否丢失了这些信息。它给你的是一个以null结尾的char数组(AKA是一个c字符串)的大小,它通过对字符进行计数直到找到空终止符(0字节或{{1}为止这样做。 })。事实上,你最重要的是一个不是特别好的strlen实现(strlen是一个标准的库函数,做同样的事情 - 确定一个以null结尾的char数组的大小)

我相信下面的内容应该是C-ish实现同样的事情:

'\n'

它返回size_t strlen(const char *s){ const char* ptr = s; for(; *ptr; ++ptr); //move the pointer until you get '\0' return ptr-s; //return the difference from the original position (=string length;) } (64位无符号int,如果你在64位机器上,32位在32台机器上,所以它可以在任意长的字符串上工作,只要它们适合内存)并且它也声明它不会修改它测量的数组(size_t表示你保证不会用它来改变指向它的指针。)