在c中计算数组时得到错误的答案

时间:2015-10-14 00:50:42

标签: c arrays count

#include <stdio.h>
#include <stdlib.h>


int countArrayChars(char *strArray[]){
    int i=0;
    while (strArray[i] != '\0'){
        i++;
    }
    printf("%d\n", i);
    return i;
}

int main(int argc, const char * argv[]) {
    char *dog[] = {"dog"};
    countArrayChars(dog);

由于某种原因,它打印“5”。

不应该打印3吗? 我甚至试图在“g”之后放置\ 0.

2 个答案:

答案 0 :(得分:1)

声明字符串数组并使用dog对其进行初始化。

char *dog[] = {"dog"};

实际上它表示为

dog[0] = "Dog";     //In your case only element index with 0.
...............
...............
dog[n] = "tiger";   //If there Have n+1 element

因此,您的数组大小为1.其中包含常量字符串dog。要访问它,您应该使用dog[0]

因此,您可以将代码用作:

int countArrayChars(char *strArray[])
{
    int i=0;
    while (strArray[0][i] != '\0')
    {
        i++;
    }
    printf("%d\n", i);
    return i;
}

int main(int argc, const char * argv[])
{
    char *dog[] = {"dog"};
    countArrayChars(dog);
}

或者,如果您要声明字符串,请使用

char *dog = "dog";

char dog[] = "dog";

答案 1 :(得分:0)

请试试这个

 #include <stdio.h>
 #include <stdlib.h>


int countArrayChars(char *strArray){
    int i=0;
    while (strArray[i] != '\0'){
        i++;
    }
    printf("%d\n", i);
    return i;
}

int main(int argc, const char * argv[]) {
    char *dog[] = "dog";
    countArrayChars(dog);
    }