计算char数组中包含空格的字符数,直到null char

时间:2010-09-23 13:38:47

标签: c++ char math

我正在尝试计算char数组中的字符数,包括直到字符串结尾的空格。

以下编译但没有返回正确的值,我正在尝试使用指针算法来遍历我的数组。

   int numberOfCharsInArray(char* array) {
       int numberOfChars = 0;
       while (array++ != '\0') {
           numberOfChars++;
       }
       return numberOfChars;
   }

非常感谢。

显然我试图从cstring获得相当于length()但使用简单的char数组。

当然如果我的原始数组没有空终止,这可能会导致一个非常大的值返回(我猜)。

4 个答案:

答案 0 :(得分:7)

要通过指针访问char指针,需要取消引用指针。目前你是    比较array(地址)和    '\0'

您可以修改代码,如:

int numberOfCharsInArray(char* array){
 int numberOfChars = 0;
   while (*array++){
       numberOfChars++;
   }
   return numberOfChars;
}

您正在模仿的cstring函数是strlen而不是length

修改

要知道while中的条件是如何工作的,您可以看到this thread

答案 1 :(得分:4)

也许我错过了一些东西,但为什么不呢:

int numberOfCharsInArray(char* array) {
  return strlen(array);
}  

......甚至:

int numberOfCharsInArray(char* array) {
  return std::string(array).length();
}

答案 2 :(得分:2)

当您编写array++ != '\0'时,检查内存地址 array是否为'\ 0'。试试这个:

int numberOfCharsInArray(char* array){
int numberOfChars = 0;
while (*array != '\0'){
   numberOfChars++; array++;
   }
return numberOfChars;
}

编辑:哎呀,codaddict更快,他的代码更优雅。

答案 3 :(得分:0)

static const size_t maxExpectedChars = 4 * 1024; // Max chars expected, e.g. 4K    
size_t numberOfCharsInArray( char * array) {
    if( !array ) { return 0; }         // A non-existing string has `0` length
    size_t charsSoFar = 0;
    while ( *array ) {
        charsSoFar += 1;
        if( charsSoFar == maxExpectedChars ) { break; }  // Stop runaway loop
        ++array;
    }
    return charsSoFar;
}