2013-09-26 3 views
0
#include <stdio.h> 
#include <string.h> 
int main() 
{ 
char name[32][32]; 
char input[32]; 
int number; 
int i; 

for(i=0;i<10;i++) 
{ 
    fgets(input,sizeof(input),stdin); 
    sscanf(input,%s,name[i]); 

} 

//assume that we don't know variable name have 10 element of arrays. 

//function to count how many elements of arrays to stored at number. 

for(i=0;i<number;i++) 
{ 
    printf("%s",name[i]); 
} 
} 

Какая функция может подсчитывать элементы массивов?Как подсчитать элементы массивов в C?

+2

Дубликат http://stackoverflow.com/questions/6716983/how-to-find-number-of-elements-present-in-an-array. –

+0

не могли бы вы объяснить, что вы хотите считать? Количество элементов в массиве? – nikoo28

+0

@Jefffrey Я думаю, что OP ссылается на 10 элементов, хранящихся в массиве, а не на размер массива. –

ответ

1

Как насчет инициализации ваших целевых строк до 0, а затем проверки, не являются ли они нулевыми во время печати?

#include <stdio.h> 
#include <string.h> 
int main() 
{ 
    char name[32][32] = {0}; 
    ... 
    for(i=0;i<32;i++) 
    { 
     if(name[i][0]!='\0') 
      printf("%s",name[i]); 
    } 
} 
+0

Что делать, если я ввожу пустую строку ('name [i] =" "')? – Evert

+0

Тогда он не подсчитывается. В соответствии с ОП. – Neil

0

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); 
} 
+0

О! мой фальшивый. извините, я не умею по-английски и значения @ Kinjail Dixit Да, я хочу знать, что функция может подсчитать элемент, хранящийся в массивах – Barbiyong

+0

@BarbiyongIcpe проверить код. –

+0

О, спасибо большое. Я могу использовать ваше руководство для применения с моей программой. вы ясно объясните – Barbiyong

0

Это решение.
Но я не знаю, почему он не работает, пытаясь сделать функцию array_length.

#include<stdio.h> 
int main(){ 
    int a[]={1,2,3,4,5,6,7,8,9,0}; 
    int len; 
    len = sizeof(a)/sizeof(*a); 
    printf("Length is %d\n",len); 
return 0; 
} 
+0

len = sizeof (a)/sizeof (int) –

Смежные вопросы