簡體   English   中英

在C中初始化字符串數組並計算其中的字母數

[英]Initialize string array in C and count number of letters inside

我找到了這個例子

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;
}

這里

但是,如何使用純C計算字符串數組中的字母數呢? 甚至我都不明白如何初始化字符串數組?!

謝謝!

發布的代碼質量很差。 函數名稱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;
}

這將計算c字符串中字母字符的數量:

#include <ctype.h>

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

如果您想要實際的字符數,計算空格和數字之類的字符,只需使用string.h strlen(s)

要找到C字符串的長度,可以使用strlen()函數

    #include<string.h>

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

C並不是特別好。我沒有給你一個char數組的大小-無法確定您是否丟失了該信息。 它提供給您的是一個以null終止的char數組的大小(又稱c字符串),它通過對字符進行計數直到找到以null終止的字符( 0字節或'\\n' )來實現。 實際上,您遇到的不是一個特別好的strlen實現(strlen是一個執行相同操作的標准庫函數-確定以null結尾的char數組的大小)

我相信下面的內容應該是同一件事的C-ish實現:

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;)
}

它返回size_t (如果您使用的是64位計算機,則返回64位unsigned int;如果您使用的是32台計算機,則返回32位,因此只要它們適合內存,它就可以處理任意長的字符串),並且還聲明將不會修改它測量的數組( const char *s表示您保證不會更改其指向的指針)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM