Так что давайте скажем, что у меня есть массив символов, который называется 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]
для сравнений, но это не изменило результат.
* Вы не можете * тест ли массив инициализирован путем чтения из него. Если вы читаете * любую часть *, которая неинициализирована, поведение вашей программы ** не определено ** в соответствии со стандартом C. – EOF
Что они инициализируются * перед *, вы помещаете в них '' '' '' '' '' '' '' '' '' '' '' '' '' '' в них? Если ничего, то вы собираетесь читать из неинициализированной памяти в этом цикле, что плохо. Если они инициализированы на '0', то ваша длина всегда будет' 12', здесь. –
Повторите, чем обсудите, как инициализирована 'str', покажите код. – chux