C не поддерживает этот вид информации. Разработчик должен реализовать некоторый способ узнать, что элемент в массиве действителен или нет. Обычно это делается путем выбора «недопустимого значения», которое является значением, которое никогда не произойдет в реальных данных. Другой способ сделать это - отдельно поддерживать счет.
Это нормально для обучения C. Если вы делаете это для реального мира, вам будет намного лучше использовать структуры данных, такие как списки. Если вы используете C++, я бы посоветовал вам изучить STL.
Простым решением C было бы что-то вроде этого. Значение «пустой» используется для указания любого значения, которое не будет происходить обычно на входе. Вы можете изменить #define на любое другое значение, которое вы хотите использовать как «-----» или «.». Начнем с инициализации всего массива «пустым»
#include <stdio.h>
#include <string.h>
#define MAX_ITEMS 32
#define MAX_LENGTH 32
#define EMPTY "empty"
int main(void)
{
char name[MAX_ITEMS][MAX_LENGTH];
char input[MAX_LENGTH];
int i;
for(i = 0; i < MAX_ITEMS; i++)
{
strcpy(name[i], EMPTY);
}
for(i = 0; i < 10; i++)
{
fgets(input, MAX_LENGTH, stdin);
sscanf(input, "%s", name[i]);
}
for(i = 0; strcmp(name[i], EMPTY) && i < MAX_ITEMS; i++)
{
printf("%s\n", name[i]);
}
return(0);
}
Дубликат http://stackoverflow.com/questions/6716983/how-to-find-number-of-elements-present-in-an-array. –
не могли бы вы объяснить, что вы хотите считать? Количество элементов в массиве? – nikoo28
@Jefffrey Я думаю, что OP ссылается на 10 элементов, хранящихся в массиве, а не на размер массива. –