2014-10-19 2 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. – EOF

+0

Что они инициализируются * перед *, вы помещаете в них '' '' '' '' '' '' '' '' '' '' '' '' '' '' в них? Если ничего, то вы собираетесь читать из неинициализированной памяти в этом цикле, что плохо. Если они инициализированы на '0', то ваша длина всегда будет' 12', здесь. –

+0

Повторите, чем обсудите, как инициализирована 'str', покажите код. – chux

ответ

1

У вас есть строка, состоящая из символов.

Вам нужно сравнить со значением символа:

if (str[i] == '0' || str[i] == '1') 
Смежные вопросы