2014-10-19 24 views
-1

所以我们可以说我有一个字符数组,称为str大小为12,并且我在数组中输入1000110,其中str [0] = 1,str [1] = 0等等...我通过在for循环中打印它来测试数组,它工作。获取字符数组中的初始值的长度

然后我想要统计在阵列中启动了多少个整数。在这种情况下,该值应为:7

这里是我的代码,无论出于何种原因,输出为1,而不是7

int length; 
length = 12; 

int actual_length() 
{ 
    int act_length = 0; 
    int i; 
    for (i = 0; i < length; i++) 
    { 
     if (str[i] == 0 || str[i] == 1) 
     { 
      act_length++; 
     } 
    } 
    printf("TEST ACTUAL LENGTH: %d\n", act_length); 
    return act_length; 
} 

我也试过

(int)str[i] 

为比较,但这并没有改变结果。

+0

*您不能*测试是否数组被从中读取初始化。如果您读取*未初始化的*部分*,则根据C标准,您的程序的行为是** undefined **。 – EOF 2014-10-19 20:26:06

+0

在将'1'和'0'放入它们之前,它们被初始化为*吗?如果没有,那么你将在该循环中从未初始化的内存中读取,这是不好的。如果它们初始化为'0',那么你的长度总是为'12',这里。 – 2014-10-19 20:27:07

+0

Rether而不是讨论如何初始化'str',显示代码。 – chux 2014-10-19 20:54:25

回答

1

您有一个由字符组成的字符串。

你需要比较对字符值:

if (str[i] == '0' || str[i] == '1')