Как найти длину/количество элементов для массива?
Возможный дубликат:
длина массива в аргументе функции
Мой размер массива - 5. Например:
arrCustId[5]
Как узнать, сколько идентификаторов клиентов уже присутствует в моем массиве?
Короче, как найти длину массива?
Ответы
Ответ 1
Если массив статически выделен, используйте sizeof(array) / sizeof(array[0])
Если это динамически распределено, но, к сожалению, вам не повезло, так как этот трюк всегда будет возвращать sizeof(pointer_type)/sizeof(array[0])
(который будет 4 в 32-битной системе с char * s). Вы могли бы: a) сохранить #define (или const) константа, или b) сохранить переменную, однако.
Ответ 2
Вы имеете в виду, как долго находится массив или сколько клиентов в нем?
Потому что ответ на первый вопрос прост: 5 (или если вы не хотите его жестко закодировать, ответ Бен Стотт).
Но ответ на другой вопрос не может быть автоматически определен. Предположительно, вы выделили массив длиной 5, но изначально у вас будет 0 идентификаторов клиентов и поместите их по одному за раз, и ваш вопрос: "Сколько идентификаторов клиентов я помещал в массив?"
C не может вам это сказать. Вам нужно будет сохранить отдельную переменную int numCustIds
(например). Каждый раз, когда вы вводите идентификатор клиента в массив, увеличивайте эту переменную. Затем вы можете сказать, сколько вы положили.
Ответ 3
Я не уверен, что я точно знаю, что вы имеете в виду.
Но чтобы получить длину инициализированного массива,
не работает strlen (string)?