Будет ли strlen() работать для массива int?
#include<stdio.h> void main() { int b[100]; int a=10; do { b[i]=a%2; c=a/2; a=c; } while(a>=2) len=strlen(b); printf("%d",b[i]); getch(); }
Лен не работает должным образом. Когда переменная 'a' инициализируется большим числом, выход для len равен 4. Когда b[100] задается вместо b[i] в printf(), ответ равен 6. Как я могу правильно получить длину массива для любого значения переменной 'a'? Пожалуйста, помогите мне. Спасибо.
Kornfeld Eliyahu Peter
Длина массива b равна 100!
Я также с трудом верю, что этот код никуда не денется (нет, я определил)...
Что касается strlen - он проверяет количество символов (байтов) от переданного указателя до первого нулевого символа (байта), поэтому он не будет корректно работать для массива int (так как размер int не совпадает с размером байта)...
Frankie-C
Я думаю, что мы не поняли, о чем вы просите.
Они уже объяснили вам, что функция 'strlen()' не работает для того, что вы делаете. Его имя-сокращение для 'string+length', и его область действия-найти длину строки символов, а не сколько значений вы поместили в общий массив.
Когда вы объявляете массив, он создается с тем количеством элементов, которое вы запросили в объявлении, в вашем случае 100 целых чисел.
Ваш код не работает:
1. Где определяется переменная i ?
2. В do-while цикл можно записать результат всегда б[я] (и я не определена).
3. В C массивы основаны на нуле, что означает, что они начинаются с 0. Для массива из 100 элементов правильные индексы находятся в диапазоне 0-99 включительно. b[100] - это ошибка!
4. От того, что мы видим (пункты 1,2 &ампер; 3) б[100] никогда не получить любое значение
Пожалуйста, улучшите свой вопрос и свой код, если вы хотите получить ответ.